使用 Node.js 驱动程序生成动态 mongodb 查询
Dynamic mongodb query generation with Node.js driver
我正在使用MongoDB的Node.js驱动程序,并且在调用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>';
阿拉伯数字。
query = { $or : [ { 'field' : 'value1' }, { 'field' : 'value2' } ] };
query['date_created'] = '<some date>';
3.
query = eval("[ { 'field' : 'value1' }, { 'field' : 'value2' } ]");
query['date_created'] = '<some date>';
在每种情况下,$or
都用引号括起来(老实说,我不确定这是否是问题所在......)并且查询失败。
有什么办法可以做到这一点吗?
以下是您可以做到这一点的方法(可能有多种方法):
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"
}
现在你应该能够运行db.collection.find(query)
相关文章:
- mongoDB动态查询中的日期筛选器
- Mongodb动态像操作员一样
- 使用 Node.js 驱动程序生成动态 mongodb 查询
- 使用动态键推送到 MongoDB 阵列
- 在Mongodb + Mongoose.js中动态查询嵌套对象
- mongoDB:聚合动态/多个字段
- 在MongoDB中动态查询字段
- 操作MongoDB结果以动态生成字段名
- MongoDB聚合-$project中的动态字段路径
- mongodb mongoi从外部文件动态导入
- 从动态mongodb嵌入对象node.js获取数据
- 如何为mongodb.update动态准备$set prams
- MongoDB动态加载
- Mongoose mongodb动态集合名称
- MongoDB聚合框架:在Project "key"中使用动态javascript变量字段
- MongoDB:带动态字段名的addToSet
- 是否有办法在node-mongodb-native中使用动态键?
- 使用Mongoose的MongoDB中的动态字段名称
- 在从mongoDB(托管@Azure)接收的Node.js中动态加载js
- 从nodejs动态数据库连接到mongodb或mongoose