2016-10-22 8 views
0

アイテムのリストで特定のメニューを更新しようとしています。カーソルはこのリストを持っており、私はそれを確かめるためにテストしました。私は、カーソル内の各項目をループし、その項目のIDをメニューの項目リストにプッシュしようとしています。以下のコードはエラーなしで完了しますが、実際にはメニューの項目フィールドは変更されません。どんな助けでも大歓迎です。ありがとう!forEach内のMongoDBシェルアップデート

cursor.forEach(function(item){ 
    db.menus.update(
     {_id: 5806639da77d6e0f00ac902c}, 
     {$push: {"items": item._id}}, 
     {upsert: true} 
    ); 
}); 

答えて

0

私はあなたが5806639da77d6e0f00ac902cを渡す要素を更新しているので、それはだと思うが、それは文字列ではありません、それはObjectIdがないとして、これは、有効なパラメータではありません注意してください。

あなたはobjectIdsととして_idsを持つデータベース上の場合は、最初にそれを変換してみてください。

db.menus.update(
    {_id: ObjectId("5806639da77d6e0f00ac902c")}, 
    {$push: {"items": item._id}}, 
    {upsert: true} 
); 
+0

私の最初の答えが間違っていた、それを修正 – andresk

関連する問題