我有一个包含json数组数组的数组。在一种页面中排序,其中一个数组=一个页面,其中包含一个包含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其中一个对象的示例
答案 0 :(得分:2)
使用$elemMatch
$or
条件来指定要匹配的数组的特定元素。 $in
运算符用于将数组的参数作为单个值,而不仅仅是用于查询数组:
Team.find({
"dayMoney": {
"$elemMatch": {
"$or": [
{ "money": '3.91'},
{ "day": '16 Aug 2015', "money": '0' }
]
}
}
},function(err,results) {
// something useful here
})
我还会在那里为你的数据代替你给出的样本数据。
要小心,因为这些是"字符串" (可能不是一个好主意)并且您似乎也在如何确定值方面存在浮点舍入问题。字符串或任何值必须是"完全匹配"除了可能落在范围内的数值或日期值。或者当然是字符串的正则表达式。