Pymongo :: 如何比较给定的数组是否与文档完全匹配?
Pymongo :: How to compare the given array exactly matches with the document?
我有一个 mongo 文档具有以下属性
{
"label": [
"ibc",
"ibd",
"ibe"
],
"location": "vochelle st"
}
并且我必须 return 仅当文档标签与给定数组完全匹配时才需要 dcocument,即 ["ibc","ibd"] 同样,我正在使用查询
db.collection.find({"location":"vochelle st","dock_label":{"$all":["ibc", "ibd"]}})
实际响应:
{
"label": [
"ibc",
"ibd",
"ibe"
],
"location": "vochelle st"
}
预期响应:
{}
由于给定数组中不存在标签“ibe”,因此预期结果必须为空字典。
- 使用
$setIntersection
与 label
和输入数组相交。
- 比较两个相交的数组 (来自 1) 和
label
数组通过 $eq
匹配。
db.collection.find({
"location": "vochelle st",
$expr: {
$eq: [
{
$setIntersection: [
"$label",
[
"ibc",
"ibd"
]
]
},
"$label"
]
}
})
在查询中输入 $size
db.collection.find({
location: "vochelle st",
label: {
$all: [
"ibc",
"ibd"
],
$size: 2
}
})
如果你想检查数组是否与你的输入完全匹配,你不需要任何运算符,只需将它与你的值进行比较:
db.collection.find({"location":"vochelle st","label": ["ibc", "ibd"]})
我有一个 mongo 文档具有以下属性
{
"label": [
"ibc",
"ibd",
"ibe"
],
"location": "vochelle st"
}
并且我必须 return 仅当文档标签与给定数组完全匹配时才需要 dcocument,即 ["ibc","ibd"] 同样,我正在使用查询
db.collection.find({"location":"vochelle st","dock_label":{"$all":["ibc", "ibd"]}})
实际响应:
{
"label": [
"ibc",
"ibd",
"ibe"
],
"location": "vochelle st"
}
预期响应:
{}
由于给定数组中不存在标签“ibe”,因此预期结果必须为空字典。
- 使用
$setIntersection
与label
和输入数组相交。 - 比较两个相交的数组 (来自 1) 和
label
数组通过$eq
匹配。
db.collection.find({
"location": "vochelle st",
$expr: {
$eq: [
{
$setIntersection: [
"$label",
[
"ibc",
"ibd"
]
]
},
"$label"
]
}
})
在查询中输入 $size
db.collection.find({
location: "vochelle st",
label: {
$all: [
"ibc",
"ibd"
],
$size: 2
}
})
如果你想检查数组是否与你的输入完全匹配,你不需要任何运算符,只需将它与你的值进行比较:
db.collection.find({"location":"vochelle st","label": ["ibc", "ibd"]})