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) {
을하지만 그럴 수 없어 나의 유스 케이스에서 그것을 사용하는 방법을 알아 내라. 누군가 나를 도와주세요!
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
나는'{mStarted : false, mLocked : false, mPlayers.mPlayerId : {$ ne : player.mPlayerId} '라고 생각합니다. }'작동해야합니다. – nutlike
MongoDB/node는 "mPlayers.mPlayerId"의 큰 팬이 아니며 예상치 못한 토큰을 제공합니다./ – unzoomed