用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){....