MongoDB匹配数组/对象数组中的值

MongoDB匹配数组/对象数组中的值,mongodb,Mongodb,我正在从事一个项目,由于我是MongoDB的新手,我对查询数据库有一个问题。我想这样查询数据库 db.getCollection('achievmenets2').find("id":20) 如果id为20,则将搜索整个文档并返回对象 这就是数据库的外观 -Achievement Category - id - Achievements_Array(Contains achievements with the ID that im gonna search for) -Ac

我正在从事一个项目,由于我是MongoDB的新手,我对查询数据库有一个问题。我想这样查询数据库

db.getCollection('achievmenets2').find("id":20)
如果id为20,则将搜索整个文档并返回对象

这就是数据库的外观

 -Achievement Category
    - id
    - Achievements_Array(Contains achievements with the ID that im gonna search for)
 -Achievement Category2
    - id
    - Achievements_Array(Contains achievements with the ID that im gonna search for)

感谢您的回答

假设您有一个包含以下数据的收集测试

测试

{
  "_id" : ObjectId("5a1172f17780777507a9be7a"),
  "name" : "Rob",
  "friends" : [ 
    "Jamie", 
    "Avisha"
  ]
}
{
  "_id" : ObjectId("5a1172f17780777507a9be7c"),
  "name" : "Kim",
  "friends" : [ 
    "Jose", 
    "Avisha"
  ]
}
您必须查询集合才能获取好友数组中包含“Avisha”的结果。要实现这一点,您可以使用mongoDB的
$in
操作符

这个查询看起来像

db.getCollection('test').find({friends: {$in: ['Avisha']}})
它将给你2个结果。同样,您可以将“test”替换为收藏名称,“friends”替换为成就数组,“Avisha”替换为要搜索的id

例如,假设friends数组包含对象

{
  "_id" : ObjectId("5a1172f17780777507a9be7a"),
  "name" : "Rob",
  "friends" : [ 
    {"name": "Jamie"}, 
    {"name": "Avisha"}
  ]
}
{
  "_id" : ObjectId("5a1172f17780777507a9be7c"),
  "name" : "Kim",
  "friends" : [ 
    {"name": "Jose"}, 
    {"name": "Avisha"}
  ]
}
您可以使用以下查询获取结果

db.getCollection('test').find({"friends.name": {$in: ['Avisha']}})

我在你的帖子中找不到任何问题陈述。如何使用嵌套对象查询整个文档