如何在数组中search多个可能的匹配

我有一个包含json数组数组的数组。 sorting在一个页面中的一个数组=一个页面,其中包含一个包含json的表的数组。

我的模特是:

var mongoose = require('mongoose'); Schema = mongoose.Schema; var Links = new Schema({ country: {country:String,league:Array}, team:String, dayMoney:[{day:String, money:String}] }); mongoose.model('team', Links) 

而我的代码是:

 Team.find({dayMoney: {"$in": [{money: '0.7800000000000002'}, { day: '24 May 2015', money: '72.61000000000001' } ]}},function(err, results) { etcc.. 

问题是一直没有回报。 我知道我的模型可能是这里的问题。

 dayMoney: [ { money: '0', day: '16 Aug 2014' }, { money: '-1', day: '17 Aug 2014' }, { money: '-1', day: '18 Aug 2014' }, { money: '1.27', day: '23 Aug 2014' }, { money: '1.27', day: '24 Aug 2014' }, { money: '1.27', day: '25 Aug 2014' }, { money: '3.91', day: '30 Aug 2014' }, { money: '3.91', day: '31 Aug 2014' }] 

是console.loging其中一个对象的示例

使用$elemMatch$or条件来指定要匹配的数组的$elemMatch元素。 $in操作符是将数组作为单个值的参数,而不仅仅是查询数组:

 Team.find({ "dayMoney": { "$elemMatch": { "$or": [ { "money": '3.91'}, { "day": '16 Aug 2015', "money": '0' } ] } } },function(err,results) { // something useful here }) 

我也在那里提出你的价值观,那些实际上符合你的样本数据的东西。

要小心,因为这些是“string”(可能不是一个好主意),你似乎也有如何确定值的浮点舍入问题。 string或任何值必须是“精确匹配”,但数值或date值可能落在范围内。 或者当然是一个正则expression式的string。