我有一个带有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个限制。我该怎么办?
不使用$并有所作为?:
collection.find({text:{$regex:".*"+keyword+".*"},username: username})
我也想知道"文本"是否是文本索引,在这种情况下应该是'$ text'。
我还注意到您在查询表达式中使用两个变量,并想知道您是否已验证了这些变量已定义。