Mongodb排序返回null而不是数据
我的Mongodb数据集是这样的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
{
"_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。我在用猫鼬。也许这就是原因