从二级嵌入文档中删除项目
Delete item from 2nd level embedded document
我有一组用户,它们有位置,有一些 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_key 但没有成功。
我试过了:
1)
db.getCollection('user').update(
{ 'locations.api_keys._id': ObjectId('5864d5e2962d747913577cc1') },
{
$pull: {
'$.api_keys': {
_id: ObjectId("58651d06962d74760b196a52")
}
}
}, false, true
)
=> 在 7 毫秒内更新了 0 条记录
2)
db.getCollection('user').update(
{},
{
$pull: {
'$.api_keys': {
_id: ObjectId("58651d06962d74760b196a52")
}
}
}, false, true
)
=> 在 7 毫秒内更新了 1 条现有记录,但未更改存储的对象
试试这个
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
)
根据上述描述,请尝试对 MongoDB 集合
执行以下更新操作
db.user.update(
{},
$pull:{locations:{api_keys:
{$elemMatch:{_id:ObjectId("58651d06962d74760b196a52")}} }}},false,true
)
我有一组用户,它们有位置,有一些 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_key 但没有成功。
我试过了:
1)
db.getCollection('user').update(
{ 'locations.api_keys._id': ObjectId('5864d5e2962d747913577cc1') },
{
$pull: {
'$.api_keys': {
_id: ObjectId("58651d06962d74760b196a52")
}
}
}, false, true
)
=> 在 7 毫秒内更新了 0 条记录
2)
db.getCollection('user').update(
{},
{
$pull: {
'$.api_keys': {
_id: ObjectId("58651d06962d74760b196a52")
}
}
}, false, true
)
=> 在 7 毫秒内更新了 1 条现有记录,但未更改存储的对象
试试这个
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
)
根据上述描述,请尝试对 MongoDB 集合
执行以下更新操作db.user.update(
{},
$pull:{locations:{api_keys:
{$elemMatch:{_id:ObjectId("58651d06962d74760b196a52")}} }}},false,true
)