Javascript 在node.js应用程序中使用$or运算符的命令行参数有什么问题?

Javascript 在node.js应用程序中使用$or运算符的命令行参数有什么问题?,javascript,json,node.js,mongodb,Javascript,Json,Node.js,Mongodb,var MongoClient=require('mongodb')。MongoClient, assert=require('assert'); 变量分配选项=[{ 概述:“维基”, }, { 里程碑:“CMO” }]; var numqueryesfinished=0; var companiesSeen={}; 对于(var i=0;i

var MongoClient=require('mongodb')。MongoClient,
assert=require('assert');
变量分配选项=[{
概述:“维基”,
}, {
里程碑:“CMO”
}];
var numqueryesfinished=0;
var companiesSeen={};
对于(var i=0;i
来自文档

数组中的$or运算符应包含对象。所以查询应该是这样的

query.overview = {$or: [{overview : {"$regex": options.overview, "$options":"i"}}, {tag_list : {"$regex": options.overview, "$options": "i"}} ]};
编辑。

这是你的问题。使用$or运算符时,必须始终首先传递它。
因此,查询可以像这样
{$or:[…]}
,但不能像这样
{somefield:{$or:[…}}}
首先,您应该确保理解问题和要使用的工具

现在请查看您使用的查询query.overview=…
相当于在mongodb shell中查找({overview:…})。在这里,您正在检查数据库中
概述
字段的值

但是您要求检查
概述
字段或
标记列表
字段是否与
选项的值相等。概述
。在mongo shell中,给定的查询如下所示:

find({$or:[{"overview":{$exists:true,$regex: options.overview, "$options":"i"}},{"tag_list":{$exists:true,$regex: options.overview, "$options":"i"}}]})
所以你很接近正确答案。您的查询可能如下所示:

query = {$or:[{"overview":{$exists:true,$regex: options.overview, "$options":"i"}},{"tag_list":{$exists:true,$regex: options.overview, "$options":"i"}}]};
我检查了字段是否存在,但这是可选的


祝你好运)

我又犯了一个错误<代码>$或没有定义。好吧……让我们简单一点。像这样尝试->集合。查找({$or:[{overview:{“$regex”:options.overview,“$options”:“i”}},{tag_list:{“$regex”:options.overview,“$options”:“i”}]})…您会有相同的错误吗?我想你有类似于coll.find的东西({query.overview={$or:…})这可能会导致很多错误。我不认为索引是这里的问题;问题的范围不清楚,您将如何解决它。我注意到您的代码中有很多错误,例如,首先,您正在通过
allOptions
数组循环,并向mongodb w发送异步请求我在一个反模式的循环中。很难遵循您试图在程序中实现的目标,我相信它需要一个简单的方法。您需要更改查询生成器,以生成如下内容{$or:[{overview:{$regex:options.overview,“$options”:“I”},{$regex:options.里程碑,$options:“I”}}…因此,我建议启动构建数组并推送您需要的所有查询参数,然后将其添加到query.overview.$或key中。我现在将尝试修复它。@MykolaBorysyuk非常感谢!非常感谢:)
find({$or:[{"overview":{$exists:true,$regex: options.overview, "$options":"i"}},{"tag_list":{$exists:true,$regex: options.overview, "$options":"i"}}]})
query = {$or:[{"overview":{$exists:true,$regex: options.overview, "$options":"i"}},{"tag_list":{$exists:true,$regex: options.overview, "$options":"i"}}]};