我有一个应用程序,我需要检查和检索具有指定名称的数据。
我使用了mongoose服务来执行此操作,服务如下:
var query = { $or: [] };
var queryAnd = { $and: [] };
queryAnd.$and.push({"Name":new RegExp("test", 'i')});
queryAnd.$and.push({$ne: ['$Value', "Deleted"]});
model.aggregate(
[
{$project:{
_id: '$Value',
sValue: "$Value",
SCount: {$cond: [queryAnd, 1, 0]}
}},
{$group: { _id: '$sValue', count: {$sum: '$SCount'} }},
{$sort: {_id: 1}}
], function (err, sResult) {
res.send(sResult);
});
在这里,我使用了'queryAnd',因为可能有很多'和'和'或'条件。
删除'queryAnd。$ and.push({“Name”:new RegExp(“test”,'i')})'给出正确的结果。但我还需要检查名称值。这在find()函数中有效,但不在'aggregate'
中我尝试过以下查询但没有效果:
queryAnd.$and.push({$in: ['$Name', "test"]});
queryAnd.$and.push({'Name':{$in:"test"}});
queryAnd.$and.push({"Name":{$elemMatch:{$eq:"test", $exists:true}}});
queryAnd.$and.push({ "$Name": { "$regex": "test", "$options": "i" } }]});
我应该怎样才能使用..提前感谢..