猫鼬,检查值是否存在于对象数组中

Mar*_*ian 4 javascript arrays mongodb node.js

我有一个集合:我想使用 $in 运算符

Person = {
 name: String,
 members: [ {id: String, email: String}... {}]
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直在使用:

Person.find({members: {"$in": [id1]}}) 
Run Code Online (Sandbox Code Playgroud)

但是我已经知道缺点:如果成员数组像那样Members: [id1, id2, ... id3],该方法将起作用。但这是一个对象数组。那么我该如何解决呢?

Ant*_*Val 9

$elemMatch可以与嵌入式文档数组一起使用:

在您的情况下,您可以尝试:

Person.find({ 
   members: { 
      $elemMatch: { id: id1 } 
   }
}); 
Run Code Online (Sandbox Code Playgroud)

但是由于这是一个查询条件

Person.find({ 
   "members.id": id1
}); 
Run Code Online (Sandbox Code Playgroud)

会做到的。

  • 最佳答案 海事组织。 (2认同)