【发布时间】:2017-07-01 17:50:20
【问题描述】:
您好,我正在使用 mongoDB,我正在尝试创建一个动态对象并作为参数传递给 find()
我的对象是这样的
图书馆
var search = {};
if(data.orderId) {
search["_id"] = { $in: data.orderId.split(",") } ;
}if(data.path) {
search["stops.districtId"] = data.path;
}if(data.special) {
search["special.option"] = { $in: data.special.split(",") } ;
}if(data.userInfo) {
search["UserId"] = data.userInfo;
}
然后我会将我的搜索对象传递给这样的查询
型号
var col = db.collection( CustomerOrderModel.collection() );
col.find(
{
serviceType:data.serviceType,
**search**
}
).skip(data.skip).limit(data.limit).sort(data.sort).toArray(function(err, res) {
if (err) {
reject( err );
} else {
resolve( res );
}
});
这里的问题是当我 console.log 我可以看到我的搜索对象时
'special.option': { '$in': [ 'ROUND_TRIP' ] } }
我的 $in 用引号括起来。所以我的查询不起作用。
如果我在查询中直接输入"special.option": { $in: [ 'ROUND_TRIP' ] } },它工作正常。
我正在尝试构建此搜索对象,因为我有多个字段要使用复杂的逻辑进行搜索。我不想在我的 模型,所以我将在我的库中创建搜索对象。
有没有办法解决这个问题,先谢谢了。
【问题讨论】:
-
您是否认真地将您的搜索对象传递给这样的查询
{ serviceType:data.serviceType, **search** }?