Mongodb $ unset留下空的数组对象(javascript)
我正在使用mongo“ $unset
”命令来删除所有匹配的文件,其索引是未知的。
比方说收集看起来像: –
{ "_id" : 1, "list" : [ { "key" : "a" }, { "key" : "b" }, { "key" : "c" } ] }
用于取消设置与"b":-
匹配的密钥的Mongo shell命令"b":-
db.test.update({"list.key":"b"}, {$unset: {'list.$.key':"b"}})
结果:-
{ "_id" : 1, "list" : [ {"key" : "a"}, {}, {"key" : "c"} ] }
需要的答案: – 如何删除空的数组对象?
注意: – 我读过的页面build议使用$pull:null
,但这不适合在这里。
谢谢!
如果你真的想先unset
它,然后从数组中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" } ] })
您可以使用pull从list
包含值为b
的key
的文档中删除:
db.test.update({ "list.key": "b" }, { $pull: { "list": {"key": "b" } } })
这将从数组中删除相应的元素:
db.test.find() { "_id" : 1, "list" : [ { "key" : "a" }, { "key" : "c" } ] }