MongoDb罗盘复合滤镜
MongoDb compass complex filter
我在 mongo 中有一个 collection。
样本单项
{
"_id": {
"$oid": "6278dc35b07e447b14feef57"
},
"formId": "6278d9f7b07e447b14feef54",
"formData": {
"0": {
"value": "297CSSIB"
},
"1": {
"value": "Alba Gonzalez"
},
"2": {
"value": "Concentrix"
},
"3": {
"value": "San Salvador"
}
}
}
现在我想使用 formId 和值 San Salvador 进行过滤。 (其中 formId = "6278d9f7b07e447b14feef54" 并且 formData 的索引 3 值为圣萨尔瓦多)
我找不到任何解决方案请帮忙。
对于当前的文档结构,只有当值 San Salvador 始终出现在索引 3 时才有可能。
在这种情况下,以下查询应该有效:
db.collection.find({
formId: "6278d9f7b07e447b14feef54",
"formData.3.value": "San Salvador"
})
但是,我建议您更改文档结构,使 formData 成为一个数组,因为它的键只是索引:
{
"_id": {
"$oid": "6278dc35b07e447b14feef57"
},
"formId": "6278d9f7b07e447b14feef54",
"formData": [
{
"value": "297CSSIB"
},
{
"value": "Alba Gonzalez"
},
{
"value": "Concentrix"
},
{
"value": "San Salvador"
}
]
}
通过这种方式,查询可以更通用,而不是特定于索引:
db.collection.find({
formId: "6278d9f7b07e447b14feef54",
"formData.value": "San Salvador"
})
我在 mongo 中有一个 collection。 样本单项
{
"_id": {
"$oid": "6278dc35b07e447b14feef57"
},
"formId": "6278d9f7b07e447b14feef54",
"formData": {
"0": {
"value": "297CSSIB"
},
"1": {
"value": "Alba Gonzalez"
},
"2": {
"value": "Concentrix"
},
"3": {
"value": "San Salvador"
}
}
}
现在我想使用 formId 和值 San Salvador 进行过滤。 (其中 formId = "6278d9f7b07e447b14feef54" 并且 formData 的索引 3 值为圣萨尔瓦多)
我找不到任何解决方案请帮忙。
对于当前的文档结构,只有当值 San Salvador 始终出现在索引 3 时才有可能。
在这种情况下,以下查询应该有效:
db.collection.find({
formId: "6278d9f7b07e447b14feef54",
"formData.3.value": "San Salvador"
})
但是,我建议您更改文档结构,使 formData 成为一个数组,因为它的键只是索引:
{
"_id": {
"$oid": "6278dc35b07e447b14feef57"
},
"formId": "6278d9f7b07e447b14feef54",
"formData": [
{
"value": "297CSSIB"
},
{
"value": "Alba Gonzalez"
},
{
"value": "Concentrix"
},
{
"value": "San Salvador"
}
]
}
通过这种方式,查询可以更通用,而不是特定于索引:
db.collection.find({
formId: "6278d9f7b07e447b14feef54",
"formData.value": "San Salvador"
})