私は現在、node.js+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) {
$ not演算子を使用する必要があると思いますが、ユースケースでの使用方法がわかりません。誰か助けてください!