我正在参加在线类(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/