106

Doc:

{
   _id: 5150a1199fac0e6910000002,
   name: 'some name',
   items: [{
      id: 23,
      name: 'item name 23'
   },{
      id: 24,
      name: 'item name 24'
   }]
}

配列から特定のオブジェクトをプルする方法はありますか?IEアイテム配列からID23のアイテムオブジェクト全体をプルするにはどうすればよいですか。

私が試してみました:

db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}});

しかし、私は「プル」を正しく使用していないと確信しています。私が理解していることから、pullは配列からフィールドをプルしますが、オブジェクトはプルしません。

オブジェクト全体を配列から引き出す方法のアイデア。

ボーナスとして、私はこれをmongoose / nodejsで実行しようとしています。また、このタイプのものがmongoose APIにあるかどうかはわかりませんが、見つかりませんでした。

4

7 に答える 7

180

試す..

db.mycollection.update(
    { '_id': ObjectId("5150a1199fac0e6910000002") }, 
    { $pull: { items: { id: 23 } } },
    false, // Upsert
    true, // Multi
);
于 2013-03-26T16:09:11.293 に答える
9

私は次のようなドキュメントを持っています

ここに画像の説明を入力してください

アドレス配列からアドレスを削除する必要があります

インターネットでたくさん検索した後、私は解決策を見つけました

Customer.findOneAndUpdate(query, { $pull: {address: addressId} }, (err, data) => {
    if (err) {
        return res.status(500).json({ error: 'error in deleting address' });
    }

    res.json(data);
});
于 2015-07-23T10:23:30.113 に答える
6

私のデータベース:

{
  "_id" : ObjectId("5806056dce046557874d3ab18"),
  "data" : [ 
    { "id" : 1 }, 
    { "id" : 2 }, 
    { "id" : 3 }
  ]
}
    

私の質問:

db.getCollection('play_table').update({},{$pull:{"data":{"id":3}}},{multi:true}

出力:

{
  "_id" : ObjectId("5806056dce046557874d3ab18"),
  "data" : [ 
    { "id" : 1 }, 
    { "id" : 2 }
  ]
}
于 2016-10-18T11:43:14.250 に答える
6

あなたもそれを試すことができます:

db.getCollection('docs').update({ },{'$pull':{ 'items':{'id': 3 }}},{multi:true})
于 2018-03-23T06:01:41.943 に答える
4

配列内の単一レコードの場合:

db.getCollection('documents').update(
    { },
    {'$pull':{ 'items':{'mobile': 1234567890 }}},
    {new:true}
);

配列内に同じ携帯電話番号を持つ複数のレコードの場合:

db.getCollection('documents').update(
    { },
    {
        $pull: {
            items: { mobile: 1234567890 }
        }
    },
    { new:true, multi:true }
)
于 2020-05-01T09:25:17.637 に答える
1

$pullデータを削除するために使用します

return this.mobiledashboardModel
.update({"_id": args.dashboardId}, { $pull: {"viewData": { "_id": widgetId}}})
.exec()
.then(dashboardDoc => {
     return {
        result: dashboardDoc
     }
});
于 2017-02-03T12:14:46.993 に答える
0

Kishore Diyyana:

要素属性リストのキーを含むすべての要素を削除する場合。

次に、mongoDBunset演算子の例を示します。

db.UM_PREAUTH_CASE.update(
{ 'Id' : 123}, { $unset: { dataElements: ""} } )

JSONは次のようになります:

{ "Id":123,"dataElements" : [ { "createdBy" : "Kishore Babu Diyyana", "createdByUserId" : 2020 }, { "createdBy" : "Diyyana Kishore", "createdByUserId" : 2021 } ] }
于 2020-10-27T16:05:00.323 に答える