【发布时间】:2023-03-11 00:16:02
【问题描述】:
假设我的 mongo 集合中有一个文档,如下所示:
{
"_id": 123,
"field_to_prune":
{
"keep_field_1": "some value",
"random_field_1": "some value",
"keep_field_2": "some value",
"random_field_2": "some value",
"random_field_3": "some value"
}
}
我想将该文档修剪为如下所示:
{
"_id": 123,
"field_to_prune":
{
"keep_field_1": "some value",
"keep_field_2": "some value"
}
}
但是,我的问题是我不知道“随机”字段名称是什么。在 mongo 中,我如何 $unset 除了几个已知字段之外的所有字段?
我可以想到几种方法,但我不知道语法.. 我可以选择所有字段名称,然后为其中的每一个未设置字段。有点像这样:
[Some query to find all field names under "field_to_prune" for id 123].forEach(function(i) {
var key = "field_to_prune." + i;
print("removing field: " + key);
var mod = {"$unset": {}};
mod["$unset"][key] = "";
db.myCollection.update({ _id: "123" }, mod);
});
我正在考虑的另一种方法是取消设置字段名称不在我定义的字符串数组中的位置。也不知道该怎么做。有什么想法吗?
【问题讨论】:
标签: mongodb mongodb-query