MongoDB如何查询嵌套的数组子文档';不包含键值

MongoDB如何查询嵌套的数组子文档';不包含键值,mongodb,Mongodb,说我有 user1 = user{ id: some_id2 books: [ { category: sience, title: book1 }, { category: art, title: book2 }, { category: science, title: book3 } ] } user2 = user{ id: some_id book

说我有

user1 = user{
  id: some_id2
  books: [
    {
      category: sience,
      title: book1
    },
    {
      category: art,
      title: book2
    },
    {
      category: science,
      title: book3
    }
  ]
}

user2 = user{
  id: some_id
  books: [
    {
      category: sience,
      title: book1
    },
    {
      category: science,
      title: book3
    }
  ]
}

现在我想启动一个查询,这样我就只能返回user2。类似于
{'books.category':{$ne:'art'}
,但是这个查询显然是错误的,因为我让两个用户都回来了。对此的正确查询是什么?

对于此查询,您可以使用
$elemMatch
。$elemMatch运算符将包含数组字段的文档与至少一个匹配所有指定查询条件的元素相匹配

{"books": {$elemMatch: { "category" : {$ne: "art"}}}}

我不确定哪里出了问题,我已经测试了你的案例,你提到的查询只返回用户2夢のの夢, 我身上没有实际的藏品,你能证实这个答案解决了你的问题吗?