Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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排序返回null而不是数据_Mongodb - Fatal编程技术网

Mongodb排序返回null而不是数据

Mongodb排序返回null而不是数据,mongodb,Mongodb,我的Mongodb数据集是这样的 { "_id" : ObjectId("5a27cc4783800a0b284c7f62"), "action" : "1", "silent" : "0", "createdate" : ISODate("2017-12-06T10:53:59.664Z"), "__v" : 0 } 现在我必须找到动作值为1,静默值为0的数据。还有一点是,所有返回的数据都是降序的。 我的Mongodb查询是 db.collection

我的Mongodb数据集是这样的

{
    "_id" : ObjectId("5a27cc4783800a0b284c7f62"),
    "action" : "1",
    "silent" : "0",
    "createdate" : ISODate("2017-12-06T10:53:59.664Z"),
    "__v" : 0
}
现在我必须找到动作值为1,静默值为0的数据。还有一点是,所有返回的数据都是降序的。 我的Mongodb查询是

db.collection.find({'action': 1, 'silent': 0}).sort({createdate: -1}).exec(function(err, post) {
            console.log(post.length);
});
早些时候,它对我来说很好,但现在我有121000个关于这个集合的条目。现在它返回null

I know there is some confusion on .sort()
如果删除排序查询,则一切都正常。范例

db.collection.find({'action': 1, 'silent': 0}).exec(function(err, post) {
            console.log(post.length);// Now it returns data but not on Descending order
});

MongoDB限制它尝试在没有索引的情况下进行排序的数据量。 这是因为Mongo必须在内存或磁盘上对数据进行排序,这两种操作都可能非常昂贵,特别是对于频繁运行的查询

  • 在大多数情况下,可以通过在排序字段上创建索引来缓解这种情况。
您可以使用以下工具创建索引:-

db.myColl.createIndex( { createdate: 1 })

谢谢

如何在特定字段上创建索引?在我的例子中,如何创建索引你可以使用我在anser中给出的相同语法,只需更改集合名称,保持其他名称不变,它将在“createdate”上创建索引,我认为,你可以根据需要更改正在进行操作的字段名称。在“createdate”上创建索引后检查运行db.myColl.createIndex({createdate:1})返回错误i,e Message.createIndex不是函数OK。我在用猫鼬。也许这就是原因