我有一个运行nodejs和mongod的AWS实例。我试图查询的集合中有大约289248个文档。
以下是我用来查询数据的代码:
var collection = db.collection('my_collection');
collection.find({ $and: [
{"text" : {$regex : ".*"+keyword+".*"}},
{"username" : username}
] }).limit(10).toArray(function(err, docs) {
最初,我遇到了仅查询用户名collection.find({"username":username})
的问题,因为mongo中有很多条目。所以我开始限制我的代码,在mongo控制台中,我可以设置30的限制,它会产生我正在寻找的结果。
但是,当我在nodejs上运行此应用程序时,当我查询此命令时,它会崩溃我的mongod服务,我必须重新启动它。在节点服务器上,限制1工作正常,但限制5不工作。如果数据库中有更多结果,我不能简单地使用限制1。我该怎么办?
答案 0 :(得分:0)
not using $and会有所作为吗? :
collection.find({text:{$regex:".*"+keyword+".*"},username: username})
我也想知道'text'是否是文本索引,在这种情况下它应该是'$ text'。
我还注意到你在查询表达式中使用了两个变量,并想知道你是否已经验证了这些变量的定义。