gpt4 book ai didi

javascript - Mongodb $unset 留下空数组对象(javascript)

转载 作者:行者123 更新时间:2023-11-30 17:29:29 25 4
gpt4 key购买 nike

我正在使用 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 的页面,但这不适合这里。

谢谢!

最佳答案

如果您真的想先取消设置,然后将缺少的元素拉出数组,请使用:

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 包含一个 key 和值为 b 的文档中删除:

db.test.update({ 
"list.key": "b" },
{ $pull: { "list": {"key": "b" } }
})

这会从数组中移除相应的元素:

db.test.find()
{ "_id" : 1, "list" : [ { "key" : "a" }, { "key" : "c" } ] }

关于javascript - Mongodb $unset 留下空数组对象(javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23455669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com