用mongoose在不同的对象数组中find一个对象
我必须知道,如果一个项目是在这个模型的第一个或第二个数组中。
Model: _id: String, array1: [{ id: Number, name: String, timestamp: String }], array2: [{ id: Number, name: String, timestamp: String }], array3: [{ id: Number, name: String, timestamp: String }], array4: [{ id: Number, name: String, timestamp: String }]
});
我正在使用这些查询,但任何人都可以帮助我改进它,或者只有一个查询呢?
Model.findOne({_id: userId , 'array1.id': item.id },function(error, res) { if(!res){ Model.findOne({_id: userId , 'array2.id': item.id },function(error, res) { if(!res){ //do what i need; }else{ //error; } }); }else{ //error; } });
我已经使用过这样的查询:
Model.findOne({$and: [{_id: userId} ,{'array1.id': item.id }, {'array2.id': item.id} ]},function(error, res) { if(!res){
但它不起作用。
您可以使用$or
语句:
Model.findOne({$and: [{_id: userId} , { $or: [ {'array1.id': item.id }, {'array2.id': item.id} ] } ]},function(error, res) { if(!res){....