2013-03-15 4 views
0

현재 node.js + mongodb 백엔드가있는 멀티 플레이어 카드 게임을 개발 중입니다. 사용자가 게임에 참여할 수있게하여 큐 기능을 구현하고 싶습니다. 이 대기열 기능에서는 mongodb에서 시작되지 않고 잠겨 있지 않고 대기열에 플레이어가 포함되어 있지 않은 단일 게임을 가져올 수 있기를 원합니다. 내 MongoDB의 게임 문서의MongoDB가 배열에 있지 않습니다.

예 :

{ 
"_id": { 
    "$oid": "512cccf9e4b09000a6f1f079" 
}, 
"mChanceTaken": false, 
"mCurrentPlayer": 0, 
"mCurrentPlayerName": "-", 
"mDeck": [ 
    { 
     "mValue": 13, 
     "mSuit": "HEARTS" 
    }, 
    { 
     "mValue": 13, 
     "mSuit": "SPADES" 
    }, 
    { 
     "mValue": 3, 
     "mSuit": "SPADES" 
    }, 
    { 
     "mValue": 10, 
     "mSuit": "SPADES" 
    }, 
    { 
     "mValue": 11, 
     "mSuit": "CLUBS" 
    }, 
    { 
     "mValue": 3, 
     "mSuit": "HEARTS" 
    }, 
    { 
     "mValue": 7, 
     "mSuit": "DIAMONDS" 
    }, 
    { 
     "mValue": 9, 
     "mSuit": "SPADES" 
    }, 
    { 
     "mValue": 8, 
     "mSuit": "HEARTS" 
    } 
], 
"mFinished": false, 
"mLocked": false, 
"mNumberOfPlayers": 4, 
"mPlayers": [ 
    { 
     "mPlayerId": "512bd9a1e4b09000a6f1f073", 
     "mUsername": "user2", 
     "mPosition": 0, 
     "mSwitching": true, 
     "mFaceUp": [], 
     "mFaceDown": [], 
     "mHand": [] 
    }, 
    { 
     "mPlayerId": "512bcb3be4b09000a6f1f06b", 
     "mUsername": "user1", 
     "mPosition": 0, 
     "mSwitching": true, 
     "mFaceUp": [], 
     "mFaceDown": [], 
     "mHand": [] 
    } 
], 
"mRoundLength": 60, 
"mStarted": false, 
"mSwitching": false 

은}

나의 현재 쿼리는 다음과 같습니다 : 나는이 $하지 연산자를 사용한다고 생각

GameBoard.findOneAndUpdate({mStarted: false, mLocked: false, mPlayers: {$not: {mPlayerId: player.mPlayerId}}}, {mLocked: true}, function (err, gameBoard) { 

을하지만 그럴 수 없어 나의 유스 케이스에서 그것을 사용하는 방법을 알아 내라. 누군가 나를 도와주세요!

답변

3

$not은 다른 연산자 표현식과 함께 사용되기 때문에 $ne 연산자를 사용해보십시오.

+0

GameBoard.findOneAndUpdate ({mStarted : false, mLocked : false, mPlayers : {mPlayerId : {$ ne : player.mPlayerId}}}, {mLocked : true}, function (err, gameBoard) 및 {GameBoard.findOneAndUpdate ({mStarted : false, mLocked : false, mPlayers : {$ ne : {mPlayerId : player.mPlayerId}}}, {mLocked : true}, function (err, gameBoard) {하지만 그 중 아무 것도 작동하지 않습니다. – unzoomed

+0

나는'{mStarted : false, mLocked : false, mPlayers.mPlayerId : {$ ne : player.mPlayerId} '라고 생각합니다. }'작동해야합니다. – nutlike

+0

MongoDB/node는 "mPlayers.mPlayerId"의 큰 팬이 아니며 예상치 못한 토큰을 제공합니다./ – unzoomed

관련 문제