通过将JSON传递给Find来查询Mongoose

时间:2014-06-27 18:35:06

标签: node.js mongodb mongoose

我希望像这样查询Mongoose:

Users.find({
    name: {
        first: 'John',
        last: 'Doe'
    }
}).exec(function(err, users){
    console.log(users);
});

但看起来我必须以这种方式格式化以获得响应:

Users.find({
    'name.first': 'John',
    'name.last': 'Doe'
}).exec(function(err, users){
    console.log(users);
});

有没有办法使用第一种方法?我希望直接传递一个JSON对象,而不必重新格式化。

谢谢!

1 个答案:

答案 0 :(得分:2)

当且仅当存在完全匹配时,您才能Users.find({ name: { first: 'John', last: 'Doe' } }。这意味着name对象仅包含具有这些值的字段。

如果你有:

name: {
    first: 'John',
    middle: 'Fearless',
    last: 'Doe'
}

然后尝试完全匹配将失败。要在子文档中进行部分匹配,您需要在第二个示例中执行:

Users.find({
    'name.first': 'John',
    'name.last': 'Doe'
});

来自mongodb的文件: