MongoDB:使用投影时在sort()之后缺少字段
所以我有一个充满图像信息的数据库,我想检索按升序日期排序的字段子集。我使用以下查询检索聚合集:MongoDB:使用投影时在sort()之后缺少字段,mongodb,Mongodb,所以我有一个充满图像信息的数据库,我想检索按升序日期排序的字段子集。我使用以下查询检索聚合集: db.images.find({}, {rel_path: 1, date: 1}).sort({'date.year': 1, 'date.month': 1}) 我希望此查询返回一个如下所示的集合: { "_id": ObjectId("530deb1060832c64291a11a7"), "date": { "year: 2006, "month": 2 }, "r
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> ...
find()查询看起来很好,并且工作正常。我通过在类似的数据集上运行它来测试它
发生这种情况的原因是集合中的一些文档没有“日期”字段。尝试运行相同的查询,方法是在“查找”查询中添加筛选条件,以便使用运算符仅返回“日期”字段存在的结果,即:
db.images.find({date:{$exists:true}}, {rel_path: 1, date: 1})
.sort({'date.year': 1, 'date.month': 1})
您可以发布集合中的示例文档吗?我已将示例添加到帖子中。您使用的是与上面发布的相同的find()查询还是不同的查询?我问这个问题是因为您提到了“聚合集”,并且您发布的输出看起来像是聚合查询的结果(因为它是一个数组),但是您发布了一个find()查询,它似乎是正确的,应该返回预期的年份和月份。很抱歉,这是我的错,我在mongojs中使用内存编写它,但是我会更新帖子以反映实际的输出。查询看起来很好,并且工作正常。我通过在类似的数据集上运行它来测试它。集合中的所有文档是否都有“日期”字段?
db.images.find({date:{$exists:true}}, {rel_path: 1, date: 1})
.sort({'date.year': 1, 'date.month': 1})