2017-03-06 7 views
1

メンバー配列にObjectをプッシュしたい場合は、それを押してください。 オブジェクトがmongodbに配列されていないかどうかを確認する方法はありますか?ObjectがmongoDbの配列でないかどうかをチェックする方法は?

{ 
_id: 1111, 
members:[ 
{user_id: 11}, 
{user_id: 12}, 
{user_id: 13} 
] 
} 

だからかどうかを確認したい:いない場合は

newUser = {user_id: 14} 

は、メンバーの配列ではありません - そこにそれを押してください。 それについています。事前にお手伝いいただきありがとうございます。

+1

あなたは 'db.collection.update( {1111} _idを試すことができます{$ addToSet:{メンバー:{ユーザーID:14}}} ) '。値が既に存在する場合、これは何も行いません。 More here https://docs.mongodb.com/manual/reference/operator/update/addToSet/#value-already-exists – Veeram

+0

お試しいただきありがとうございます – Serhiy

+0

実行するたびに '_id:1111'のドキュメントと一致する@Veeramこのクエリ。そして、毎回ドキュメントを更新しようとします。 –

答えて

2

使用する$ニン演算子にオブジェクトをプッシュされていない場合、この

db.collection.find(
    { _id: 1111, members: { $elemMatch: { user_id: 14 } } } 
) 

ためelemMatchを使用しますシンプルな$プッシュ:、 :

db.collection.update({'members.user_id':{$nin: [14]}}, {$push:{members:{user_id:14}}}) 
0

まず、文書内の配列にその特定のオブジェクトが含まれているかどうかを確認する必要があります。上記返す何もあなたはmembers配列が14の更新に等しいuser_idとドキュメントが含まれていないかどうかを確認するために

db.collection.update(
    { _id: 1111 }, 
    { $push: { user_id: 14 } } 
) 
関連する問題