我正在使用mongo“$unset
”命令删除索引未知的特定条件的所有匹配文档。
让我们说集合看起来像: -
{
"_id" : 1,
"list" : [
{
"key" : "a"
},
{
"key" : "b"
},
{
"key" : "c"
}
]
}
Mongo shell命令用于取消设置匹配"b":-
db.test.update({"list.key":"b"}, {$unset: {'list.$.key':"b"}})
结果: -
{
"_id" : 1,
"list" : [ {"key" : "a"}, {}, {"key" : "c"} ]
}
需要答案: - 如何删除空数组对象?
注意: - 我已经阅读了建议使用$pull:null
的页面,但这不适用于此处。
谢谢!
答案 0 :(得分:2)
如果确实首先想要unset
,然后将数据丢失key
从数组中删除,请使用:
db.test.update(
{ "_id": 1 }, // you can also use { } to clean up the whole collection
{ $pull: { "list": { "key": {$exists: false} } } }
)
但是,如果没有充分理由使用pull
一次性完成:
db.test.insert({
"_id" : 1,
"list" : [ { "key": "a" }, { "key": "b" }, { "key": "c" } ]
})
您可以使用“提取”从list
包含值为key
的{{1}}的文档中删除:
b
这将从数组中删除相应的元素:
db.test.update({
"list.key": "b" },
{ $pull: { "list": {"key": "b" } }
})