javascript - Node 中无法识别 $or 运算符

标签 javascript node.js mongodb

我正在参加在线类(class),但遇到查询问题。在 shell 中工作正常,但是在运行 js 文件时出现错误:未知运算符:$or。这是相关代码:

var allOptions = [
    {
        overview: "wiki",
    },
    {
        milestones: "CMO"
    }
];

然后在查询函数中:

  var query = {};

    if ("overview" in options) {      
     query.overview = { "$or": [{"overview": {"$regex": options.overview, "$options": "i"}}, 
{"tag_list": {"$regex": options.overview, "$options": "i"}}] }

在 shell 中,如果我这样查询:

db.companies.find({ $or: [{"overview": {"$regex": "wiki"}}, {"tag_list": {"$regex": "wiki"}}] }).count();

我得到了结果。我究竟做错了什么?任何帮助将不胜感激

最佳答案

您需要.find()正确的元素:

var allOptions = [ { "overview" : "wiki" }, { "milestones" : "CMO" } ]

var query = { };
if ( allOptions.find( o => o.overview ) ) {

  var overview = allOptions.find(o => o.overview ).overview;
  // returns "wiki"

  query.$or = [
     {"overview": {"$regex": overview, "$options": "i"}}, 
       {"tag_list": {"$regex": overview, "$options": "i"}}
  ];
  // query is now like
  // { "$or": [{"overview": {"$regex": "wiki", "$options": "i" }}, {"tag_list": {"$regex": "wiki", "$options": "i" }}]
}

Company.find(query,function(err,results) {
  console.log(results);
})

关于javascript - Node 中无法识别 $or 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44579717/

相关文章:

node.js - 如何在EJS过滤器中获取请求对象?

node.js - Webpack 构建错误

javascript - 了解 Node/Mongo 中的 find

mongodb - 在Mongodb中,如何检索符合条件的对象的子集?

javascript - 引用错误: error is not defined when pass callback parameter

Applescript 中的 Javascript

node.js - 我可以在创建模型后将 mongoose 插件添加到模型吗?

javascript - Mongo 填充可选字段,给出强制转换错误

javascript - 从 Javascript 对象检索属性

javascript - 如何单击一个元素并监听另一元素值的变化?