首页 > 解决方案 > 根据id从mongodb中的嵌套数组中删除数组

问题描述

我在 mongodb 中有一个数组,我想根据我拥有的 id 在其中删除一个嵌套数组

下面是我的数组结构

{
        "_id" : ObjectId("5b17b991c440782b5a218cd1"),
       
        "product" : [
                {
                        "id" : ObjectId("5b71310eeff5c42f00f8a4e8"),
                        "vendor_user_id" : ObjectId("5b17b992c440782b5a218cd2"),
                        "product_type_id" : ObjectId("5ae834807ae0d9538e45ab45"),
                        "condition_id" : [
                                {
                                        "_id" : ObjectId("5ae977da7ff1706f3b7dc47a"),
                                        "status" : 1,
                                        "date_added" : "2018-08-10-09-55-54"
                                }
                        ],
                        "shipping_cost" : NumberLong(100),
                        "date_added" : "2018-08-10-09-55-54",
                        "date_status_change" : "2018-08-10-09-55-54",
                        "status" : 1
                },
                {
                        "id" : ObjectId("5b76ae3a40c1c449d6409fa3"),
                        "vendor_user_id" : ObjectId("5b17b992c440782b5a218cd2"),
                        "product_type_id" : ObjectId("5ae8348b7ae0d9538e45ab46"),
                        "condition_id" : [
                                {
                                        "_id" : ObjectId("5ae977da7ff1706f3b7dc47a"),
                                        "status" : 0,
                                        "date_added" : "2018-08-17-11-15-06"
                                },
                                {
                                        "_id" : ObjectId("5ae978187ff1706f3b7dc47c"),
                                        "status" : 0,
                                        "date_added" : "2018-08-17-11-15-06"
                                }
                        ],
                        "shipping_cost" : 100,
                        "date_added" : "2018-08-17-11-15-06",
                        "date_status_change" : "2018-08-17-11-15-06",
                        "status" : 0
                },
       
        ]

例如,我想删除condition_id基于它_id_id该数组块的特定数组。例如,如果我想删除第一个,condition_id我将拥有ObjectId('5ae977da7ff1706f3b7dc47a')condition_id 和ObjectId('5b71310eeff5c42f00f8a4e8')id块的值。

到目前为止,我已经尝试过了

db.vendor.update({_id:ObjectId('5b17b991c440782b5a218cd1')},     {$pull: {product: {id: ObjectId('5b71310eeff5c42f00f8a4e8')},condition_id:{_id:ObjectId('5ae977da7ff1706f3b7dc47a')}}});

编辑1:

我试过这个..它甚至不匹配数组

db.vendor.update(  { "_id": ObjectId("5b17b991c440782b5a218cd1")},{ "$pull": { "product.$.id": ObjectId('5b71310eeff5c42f00f8a4e8') } } );

标签: phpdatabasemongodbweb

解决方案


推荐阅读