我正在使用 MongoDB 的 Node.js 驱动程序,并且在调用 find() 之外构造查询对象没有问题,直到我尝试将$or
构造引入组合中。
我正在尝试动态生成查询,因为我有可变数量的参数,并且不希望有与我有参数一样多的 collection.find 调用。
为此,我使用了一个简单的查询:
var query = {};
query['name'] = 'Steve';
query['date_created'] = '<some date>';
mongo_collection.find(query, function(err, c) {});
但是,当我尝试使用 $ 或整个过程分崩离析。
我没有高兴地尝试了以下每一项:
var query = {};
1.
query[$or] = [ { 'field' : 'value1' }, { 'field' : 'value2' } ];
query['date_created'] = '<some date>';
2.
query = { $or : [ { 'field' : 'value1' }, { 'field' : 'value2' } ] };
query['date_created'] = '<some date>';
3.
query = eval("[ { 'field' : 'value1' }, { 'field' : 'value2' } ]");
query['date_created'] = '<some date>';
在每种情况下,$or
都用引号括起来(老实说,我不确定这是否是问题......)并且查询失败。
有没有办法做到这一点?