Ste*_*ner 3 javascript mongodb node.js
我正在使用MongoDB的Node.js驱动程序,并且在调用find()之外构造查询对象没有任何问题,直到我尝试将$or构造引入混合.
我试图动态生成查询,因为我有一个可变数量的参数,并且宁愿没有尽可能多的调用到collection.find,因为我有参数.
为此,我使用的查询简单如下:
var query = {};
query['name'] = 'Steve';
query['date_created'] = '<some date>';
mongo_collection.find(query, function(err, c) {});
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用$或整个过程崩溃时.
我已经尝试了下面的每一个,没有任何乐趣:
var query = {};
Run Code Online (Sandbox Code Playgroud)
1.
query[$or] = [ { 'field' : 'value1' }, { 'field' : 'value2' } ];
query['date_created'] = '<some date>';
Run Code Online (Sandbox Code Playgroud)
2.
query = { $or : [ { 'field' : 'value1' }, { 'field' : 'value2' } ] };
query['date_created'] = '<some date>';
Run Code Online (Sandbox Code Playgroud)
3.
query = eval("[ { 'field' : 'value1' }, { 'field' : 'value2' } ]");
query['date_created'] = '<some date>';
Run Code Online (Sandbox Code Playgroud)
在每种情况下$or都用引号括起来(老实说,我不确定这是不是问题......)并且查询失败.
有没有办法实现这个目标?
Asy*_*sky 10
以下是如何做到这一点(可能有多种方式):
var query = {};
query["$or"]=[];
query["$or"].push({"field":"value1"});
query["$or"].push({"field":"value2"});
query["date_created"]="whatever";
query
{
"$or" : [
{
"field" : "value1"
},
{
"field" : "value2"
}
],
"date_created" : "whatever"
}
Run Code Online (Sandbox Code Playgroud)
现在你应该可以运行db.collection.find(query)了
| 归档时间: |
|
| 查看次数: |
5660 次 |
| 最近记录: |