2016-08-16 30 views
10

私はnode.jsとMongo.dbを使用しています(私はMongoに新しく追加されました)。私はこのような文書いる:アイデアがあり、サーバがこのJSONでMongoDb:存在しない場合、配列に要素を追加します。

JSON: { 
    name: "sport", 
    videoId: "34f54e34c" 
} 

のようなJSONを受信であれば、それは同じ名前のタグを検索し、チェックするために

Tag : { 
    name: string, 
    videoIDs: array 
} 

を持っています配列にはvideoIdがあり、そうでなければ配列に挿入します。

アレイをチェックしてデータを追加するにはどうすればよいですか?

+0

「配列にはvideoIdがあります」どのアレイについてお話していますか? – Shrabanee

答えて

25

演算子$addToSetを使用して、要素を配列に追加する前に存在を確認できます。このUPDATE文の例では

db.tags.update(
    {name: 'sport'}, 
    {$addToSet: { videoIDs: "34f54e34c" } } 
); 

、MongoDBは名前==「スポーツ」に一致するタグのドキュメントを見つけ、その後、videoIDs配列が「34f54e34c」が含まれているかどうかをチェックします。そうでない場合は、配列に追加します。

$ addToSetの詳細な使用方法はhereをお読みください。

+0

@albert、はい、1つの要素を挿入できます。 "videoIDs"は配列で、存在しない場合は "34f54e34c"という文字列を挿入します。 – yellowB

+0

これは動作しますが、重複を避けて新しいIDを追加します – albert

+2

フィールド 'videoIDs'が存在しない場合はどうなりますか? –

1

私はそれをテストしていないが、あなたのような何かを試すことができます。

yourDb.find({ name: "sport", 
       videoIDs: { $in: ["34f54e34c"] } }) 
     .update({$addToSet: { videoIDs: "34f54e34c" }}); 

あなたはどのように必要がある場合:nodeJsの実装ではMongoDBは、あなたが始めることができると:

http://jsfiddle.net/1ku0z1a1/

2

$ addToSet演算子は、ドキュメント内の空の配列または既存の配列をチェックします。

db.col_name.update({name :"name_for_match"},{$addToSet : { videoId : "video_id_value"}}) 
関連する問題