我知道$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的字符串,但这并不是我想要的.

推荐答案

我相信你想要imgs.0.给出你的示例文档,你想说:db.products.find({"imgs.0": "http://foo.jpg"})

请注意,引用数组索引仅适用于第一级array.Mongo不支持更深入地搜索数组索引.

Mongodb相关问答推荐

如何拉平mongo DB中的对象并在根目录中保存时有条件地重命名字段?

mongo如何通过聚合加载嵌套文档

使用 $addFields 将字段添加到 $lookup 结果中的每个项目

MongoDB 查询以包含多个字段的最常见值的计数

MongoDB查询仅返回嵌入文档

MongoDB C# 驱动程序 2.0 InsertManyAsync 与 BulkWriteAsync

mongodb中集合的最大大小是多少

Spring Boot MongoDB 连接问题

Java MongoDB FindOne 获取最后插入的记录

我怎样才能排序空值在 mongodb 中是最后排序的?

为什么 PyMongo 会抛出 AutoReconnect?

不能在模块外使用 import 语句

Mongoose:填充填充字段

MongoDB展开多个数组

mongo - 如何查询嵌套的 json

Mongo:匹配聚合查询中的日期似乎被忽略了

如何在 NoSql 数据库(MongoDB)中强制执行外键?

无法在 mac os 10.9 上安装 mongodb php 驱动程序

如何在 Ubuntu 10.04 中使用 --auth 选项重新启动 mongodb?

用 MongoDB 中的属性表示多对多关系的最佳模型