使用 Mongo 查询,从字典列表中删除特定键(如果存在)
Using Mongo Query, remove specific key (if it exists) from a list of dictionaries
我目前正在使用查询一次更新多个 mongo 文档。
数据结构如图:
{
"_id" : ObjectId("60742505d67349ff473531ca"),
"user_id" : "1",
"md5checksum" : "0x0",
"metadata" : {
"tag_ids" : [
"566bb8b92121069b34ae448a",
"566bb8b82121069b34ae4481"
],
"category_id" : "60640fa4dc84ef2ed9f6a1c9",
"custom_metadata" : [
{
"key_id" : "5a79e24b7fda236fbebe1912",
"type" : "freetext",
"value" : [
"kiShaan",
"desh"
]
},
{
"key_id" : "6052e700dc84ef7d492b5d30",
"multi_value_exists" : true,
"type" : "freetext",
"value" : [
"kiShaan",
"desh",
"Fauji",
"Saad"
]
}
],
"description" : "test bulk archive",
"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})
我面临的问题是 某些 文档具有键“multi_value_exists”,而不是全部。在使用显示的查询进行更新时,我还想使用 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})
我目前正在使用查询一次更新多个 mongo 文档。 数据结构如图:
{
"_id" : ObjectId("60742505d67349ff473531ca"),
"user_id" : "1",
"md5checksum" : "0x0",
"metadata" : {
"tag_ids" : [
"566bb8b92121069b34ae448a",
"566bb8b82121069b34ae4481"
],
"category_id" : "60640fa4dc84ef2ed9f6a1c9",
"custom_metadata" : [
{
"key_id" : "5a79e24b7fda236fbebe1912",
"type" : "freetext",
"value" : [
"kiShaan",
"desh"
]
},
{
"key_id" : "6052e700dc84ef7d492b5d30",
"multi_value_exists" : true,
"type" : "freetext",
"value" : [
"kiShaan",
"desh",
"Fauji",
"Saad"
]
}
],
"description" : "test bulk archive",
"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})
我面临的问题是 某些 文档具有键“multi_value_exists”,而不是全部。在使用显示的查询进行更新时,我还想使用 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})