您好我有一个类似这样的文档结构。
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",
]
},
]
我想查询[“哈利波特”,“生命之谜”],它将返回包含这两本书的文件。
所以在这种情况下,将返回第一个和第三个记录!
提前致谢!
答案 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
会更好。