【发布时间】:2014-03-17 20:09:11
【问题描述】:
所以我有一个充满图像信息的数据库,我想检索按升序排序的字段子集。我使用以下查询来检索聚合集:
db.images.find({}, {rel_path: 1, date: 1}).sort({'date.year': 1, 'date.month': 1})
我希望这个查询返回一个看起来像这样的集合:
{
"_id": ObjectId("530deb1060832c64291a11a7"),
"date": { "year: 2006, "month": 2 },
"rel_path": "/mnt/backup/Backup/Photos/asdfasdfasdf.jpg"
}
{
"_id": ObjectId("530de1db60832c64291a05ec"),
"date": { "year: 2006, "month": 5 },
"rel_path": "/mnt/backup/Backup/Photos/qweqweqwe.jpg"
}
... <more documents> ...
然而,我得到的是这样的:
{
"_id": ObjectId("530deb1060832c64291a11a7"),
"rel_path": "/mnt/backup/Backup/Photos/asdfasdfasdf.jpg"
}
{
"_id": ObjectId("530de1db60832c64291a05ec"),
"rel_path": "/mnt/backup/Backup/Photos/qweqweqwe.jpg"
}
... <more documents> ...
如果我跳过“sort()”,我会从投影中获取所有字段,所以“date”字段似乎被“sort()”调用删除了。
有人知道这里发生了什么吗?
编辑:以下是应要求提供的示例文档:
{
"_id" : ObjectId("530de16860832c64291a0562"),
"orientation" : 1,
"camera_make" : "Apple",
"camera_model" : "iPhone 4",
"rel_path" : "Bröllopsbilder/IMG_0997.JPG",
"file_size" : 1827977,
"date" : { "month" : "10", "year" : "2011" },
"root" : "/mnt/backup/Backup/Bilder/",
"md5" : "fb26ebf24914d515144be5e53797744b"
}
【问题讨论】:
-
你能从收藏中发布一个示例文档吗?
-
我在帖子中添加了一个示例。
-
您使用的是与上面发布的相同的 find() 查询还是不同的查询?我问这个是因为您提到“聚合集”并且您发布的输出看起来像聚合查询的结果(因为它是一个数组),但是您发布了一个 find() 查询,这似乎是正确的,应该返回年份和月份符合预期。
-
对不起,这是我的错,我是在 mongojs 中写出来的,但我会更新帖子以反映实际输出。
-
查询似乎很好,并且按预期工作。我通过针对类似的数据集运行它来测试它。集合中的所有文档是否都有“日期”字段?
标签: mongodb