Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB:使用投影时在sort()之后缺少字段_Mongodb - Fatal编程技术网

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})