我知道 $in
运算符,它似乎搜索项目在数组中的存在,但我只想找到一个匹配项,如果该项位于数组的第一个位置 .
例如:
{
"_id" : ObjectId("0"),
"imgs" : [
"http://foo.jpg",
"http://bar.jpg",
"http://moo.jpg",
]
},
{
"_id" : ObjectId("1"),
"imgs" : [
"http://bar.jpg",
"http://foo.jpg",
"http://moo.jpg",
]
}
我正在寻找类似于的查询:
db.products.find({"imgs[0]": "http://foo.jpg"})
这将/应该返回 ObjectId("0")
但不返回 ObjectId("1")
,因为它只检查数组中的第一个图像 .
怎么能实现这一目标?我知道我可以创建一个单独的字段,其中包含 firstImg
的单个字符串,但是此后的's not really what I' m .
2 回答
您可以对数组索引使用点表示法:
以下是dot notation相关文档的摘录 .
此外,这里是相关array documentation的链接 .
我相信你想
imgs.0
. 例如,根据您的示例文档,您想说:db.products.find({"imgs.0": "http://foo.jpg"})
请注意,引用数组索引仅适用于第一级数组 . Mongo不支持更深入地搜索数组索引 .