MongoDB数组谓词
我想知道是否有办法做出复杂的选择。 考虑到以下文件收集:MongoDB数组谓词,mongodb,Mongodb,我想知道是否有办法做出复杂的选择。 考虑到以下文件收集: { image = "cab" tags = [ [ "NNP", 0 ], [ "NN", 1 ] ] }, { image = "castle" tags = [ [ "NNP", 2 ], [ "NN", 1 ], [ "VB", 0 ] ] }, (etc)
{
image = "cab"
tags = [
[ "NNP", 0 ],
[ "NN", 1 ]
]
},
{
image = "castle"
tags = [
[ "NNP", 2 ],
[ "NN", 1 ],
[ "VB", 0 ]
]
},
(etc)
我如何表达一个查询,检查标记
是否包含任何元素,例如,[“NN”,?]
,其中我根本不关心内部数组的整数部分?请注意,内部数组是无序的,整数值是任意分配的
请注意,我是mongodb的新手,我可能在文档中忽略了这样做的方法。但是,我无法成功地使用
$elemMatch
:-(我建议使用另一种模式:
{
image = "cab"
tags = [
{ name: "NNP", order: 0 },
{ name: "NN", order: 1 }
]
}
我建议采用另一种模式的原因有三:
{
image = "cab"
tags = [
{ name: "NNP", order: 0 },
{ name: "NN", order: 1 }
]
}
db.images.find({ "tags.name" : "NN", "tags.order" : 1 })
更新:
文件
希望这有帮助!谢谢。我也这么怀疑。不过,您的查询没有立即起作用,因为
标记仍然是一个对象数组,但发出了.find({“标记”:{$elemMatch:{“标记”:“NN”}}}}})
对您的模式做得很好。@Manny:我的查询没有问题;).find({“tags”:{$elemMatch:{“tag”:“NN”}}})
给出与相同的结果。find({“tags.tag”:“NN”)
。只需查看或询问是否需要。此外,我在回答中添加了指向“点表示法”文档的链接。