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

但它不起作用。

  • MongoDB设置与node.js:错误:无法连接到
  • 如何使用.where()后填充mongoose
  • 如何在我的Mongoose模式中引用另一个模式?
  • Mongoose versionKey在更新的where子句中没有显示
  • mongoose发现不匹配来自数组传递的id
  • Mongoose - 如何确定一个嵌套的对象是否已经存在于一个查询中?
  • mognoose用多列正则expression式search
  • mongoose一对多
  • 您可以使用$or语句:

     Model.findOne({$and: [{_id: userId} , { $or: [ {'array1.id': item.id }, {'array2.id': item.id} ] } ]},function(error, res) { if(!res){....