Doc:
{
_id: 5150a1199fac0e6910000002,
name: 'some name,
items: [{
id: 23,
name: 'item name 23'
},{
id: 24,
name: 'item name 24'
}]
}
配列から特定のオブジェクトをプルする方法はありますか? I.E.アイテム配列からID 23のアイテムオブジェクト全体を取得するにはどうすればよいですか。
私が試してみました:
db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});
しかし、「プル」を正しく使用していないと確信しています。私が理解していることから、プルはオブジェクトからではなく配列からフィールドを引き出します。
オブジェクト全体を配列から引き出す方法についてのアイデア。
ボーナスとして、私はこれをmongoose/nodejsでしようとしていますが、このタイプのものがmongoose APIにあるかどうかはわかりませんが、見つけることができませんでした。
試してみてください。
db.mycollection.update(
{'_id': ObjectId("5150a1199fac0e6910000002")},
{ $pull: { "items" : { id: 23 } } },
false,
true
);
my database:->
{
"_id" : ObjectId("5806056dce046557874d3ab18"),
"data" : [
{
"id" : 1
},
{
"id" : 2
},
{
"id" : 3
}
]
}
MY QUERY:->
db.getCollection('play_table').update({},{$pull:{"data":{"id":3}}},{multi:true}
OutPut:->
{
"_id" : ObjectId("5806056dce046557874d3ab18"),
"data" : [
{
"id" : 1
},
{
"id" : 2
}
]
}
つかいます $pull
データを削除する
return this.mobiledashboardModel
.update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}})
.exec()
.then(dashboardDoc => {
return {
result: dashboardDoc
}
});
あなたもそれを試すことができます:
db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})