我正在使用Node.js驱动程序来操作MongoDB数据库,在find()调用之外构建查询对象没有问题,但当我尝试将$or
操作引入其中时出现了问题。
我希望动态生成查询语句,因为我的参数数量是可变的,并且希望尽可能减少对collection.find的调用次数。
为此,我正在使用如下简单的查询语句:
var query = {};
query['name'] = 'Steve';
query['date_created'] = '<some date>';
mongo_collection.find(query, function(err, c) {});
然而,当我尝试使用$or时,整个过程都会崩溃。
我已尝试以下每种方法均无法成功:
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
都需要用引号括起来(老实说我不确定这是否是问题的原因...),否则查询将失败。
有没有什么方法可以解决这个问题?