Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 使用Mongo查询,从字典列表中删除特定键(如果存在)_Database_Mongodb_Dictionary_Mongodb Query_Pymongo - Fatal编程技术网

Database 使用Mongo查询,从字典列表中删除特定键(如果存在)

Database 使用Mongo查询,从字典列表中删除特定键(如果存在),database,mongodb,dictionary,mongodb-query,pymongo,Database,Mongodb,Dictionary,Mongodb Query,Pymongo,我目前正在使用一个查询一次更新多个mongo文档。 数据结构如图所示: { “_id”:ObjectId(“60742505d67349ff473531ca”), “用户id”:“1”, “md5checksum”:“0x0”, “元数据”:{ “标签ID”:[ “566bb8b92121069b34ae448a”, “566bb8b82121069b34ae4481” ], “类别id”:“60640fa4dc84ef2ed9f6a1c9”, “自定义元数据”:[ { “密钥id”:“5a79

我目前正在使用一个查询一次更新多个mongo文档。 数据结构如图所示:

{
“_id”:ObjectId(“60742505d67349ff473531ca”),
“用户id”:“1”,
“md5checksum”:“0x0”,
“元数据”:{
“标签ID”:[
“566bb8b92121069b34ae448a”,
“566bb8b82121069b34ae4481”
],
“类别id”:“60640fa4dc84ef2ed9f6a1c9”,
“自定义元数据”:[
{
“密钥id”:“5a79e24b7fda236fbebe1912”,
“类型”:“自由文本”,
“价值”:[
“基沙恩”,
“德什”
]
},
{
“密钥id”:“6052e700dc84ef7d492b5d30”,
“多重价值存在”:真,
“类型”:“自由文本”,
“价值”:[
“基沙恩”,
“德什”,
“福吉”,
“萨阿德”
]
}
],
“说明”:“测试批量存档”,
“slug”:“a-alpha”
}
}
要更新它们的查询是:

db.example.update({"metadata.custom_metadata.key_id":"6052e700dc84ef7d492b5d30"},{"$set":{"metadata.custom_metadata.$.value":["kiShaan","desh","Fauji","Saad"],"metadata.custom_metadata.$.type":"freetext"}},{"multi":true})
我面临的问题是,可能会有某些文档具有关键的“多值存在”,而不是全部。在使用显示的查询进行更新时,如果使用mongo查询本身存在键“multi_value_exists”,我还希望删除该键。任何帮助都足够了。提前感谢。

您可以尝试此查询

db.example.update({"metadata.custom_metadata.key_id":"6052e700dc84ef7d492b5d30"},
{"$set":{"metadata.custom_metadata.$.value":["kiShaan","desh","Fauji","Saad"],"metadata.custom_metadata.$.type":"freetext"},
"$unset": { "multi_value_exists": 1 } },
{"multi":true})

哦,是$unset。完全错过了。我必须使用{“$unset”:“metadata.custom_metadata.$.multi_value_exists”:1}。即使某些文档中不存在该密钥,它也可以工作。谢谢