NodeJS Mongoose Query数组,是另一个数组的子集

时间:2015-10-02 01:20:53

标签: arrays node.js mongodb mongoose mongodb-query

您好我有一个类似这样的文档结构。

  Users = [
  {
    _id: 32339457349878493,
    books: [
      "Harry Potter",
      "Lord of the Rings",
      "Life of Pi"
    ]
  },
  {
    _id: 32339457349878493,
    books: [
      "Life of Pi",
      "The Alchemist",
      "Mocking Jay"
    ]
  },

  {
    _id: 32339457349878493,
    books: [
      "Harry Potter",
      "Life of Pi",
      "The Alchemist",

    ]
  },

  ]

我想查询[“哈利波特”,“生命之谜”],它将返回包含这两本书的文件。

所以在这种情况下,将返回第一个和第三个记录!

提前致谢!

1 个答案:

答案 0 :(得分:2)

您基本上想要$all,这是$and的简写版本:

Users.find({ "books": { "$all":  ["Harry Potter", "Life of Pi"] } },function(err,users) } {

});

这基本上意味着"书籍"数组必须包含指定的两个参数才能匹配。

$and的较长格式需要两次命名的字段:

{
    "$and": [
        { "books": "Harry Potter" },
        { "books": "Life of Pi" }
    ]
}

因此使用$all会更好。