Mongodb 从二级嵌入文档中删除项目

Mongodb 从二级嵌入文档中删除项目,mongodb,mongodb-query,embedded-documents,Mongodb,Mongodb Query,Embedded Documents,我有一个用户集合,其中有位置,有一些api键 { "_id" : ObjectId("5864d5e2962d747913577cc1"), "username" : "george", "usernameCanonical" : "george", "email" : "george.something@gmail.com", "emailCanonical" : "george.something@gmail.com", "enabled" :

我有一个用户集合,其中有位置,有一些api键

{
    "_id" : ObjectId("5864d5e2962d747913577cc1"),
    "username" : "george",
    "usernameCanonical" : "george",
    "email" : "george.something@gmail.com",
    "emailCanonical" : "george.something@gmail.com",
    "enabled" : true,
    "password" : "bla bala bla",
    "roles" : [],
    "lastLogin" : ISODate("2016-12-29T09:23:18.000Z"),
    "locations" : [ 
        {
            "_id" : ObjectId("5864da9c962d7476037076b2"),
            "name" : "lalala",
            "address" : "bla bla bla",
            "api_keys" : [ 
                {
                    "_id" : ObjectId("58651d06962d74760b196a52"),
                    "key" : "some valid key1",
                    "is_test" : true
                }
            ]
        }
    ]
}
我正在尝试删除api_密钥,但未成功

我试过:

(一)

=>在7毫秒内更新了0条记录

(二)

=>在7毫秒内更新了1条现有记录,但未对存储对象进行任何更改

db.getCollection('user').update(
{},
{
    $pull: {
        'locations.0.api_keys': {
            _id: ObjectId("58651d06962d74760b196a52")
        }
    }
}, false, true);
试试这个

db.getCollection('user').update(
{},
{
    $pull: {
        'locations.0.api_keys': {
            _id: ObjectId("58651d06962d74760b196a52")
        }
    }
}, false, true);
更多的是直觉

db.getCollection('user').update(
    {},
    {
        $pull: {
            'locations.$.api_keys': {
                _id: ObjectId("58651d06962d74760b196a52")
            }
        }
    }, false, true
)
更多的是直觉

db.getCollection('user').update(
    {},
    {
        $pull: {
            'locations.$.api_keys': {
                _id: ObjectId("58651d06962d74760b196a52")
            }
        }
    }, false, true
)

根据上述描述,请尝试在MongoDB集合上执行以下更新操作

db.user.update(
    {},
    $pull:{locations:{api_keys:
        {$elemMatch:{_id:ObjectId("58651d06962d74760b196a52")}} }}},false,true
    )

根据上述描述,请尝试在MongoDB集合上执行以下更新操作

db.user.update(
    {},
    $pull:{locations:{api_keys:
        {$elemMatch:{_id:ObjectId("58651d06962d74760b196a52")}} }}},false,true
    )

抱歉,它抛出了一个错误<代码>位置运算符未从查询中找到所需的匹配项。未展开的更新:位置。$.api_keys很抱歉,它引发了一个错误<代码>位置运算符未从查询中找到所需的匹配项。未扩展的更新:位置。$.api\u key它删除位置对象,而不是api\u key对象它删除位置对象,而不是api\u key对象