如何在mongoose中获取嵌套对象的值?

时间:2015-10-21 07:47:28

标签: node.js mongodb mongoose

我在使用mongoose模块的nodejs上有一些代码,我需要获取嵌套值,让我告诉你:

我创建架构

var clientScheme = mongoose.Schema({
    name: Object
    address: String,
    number: Number,
    operator: Object,
    services: Object,
    email: String
})

然后我创建模型:

var Client = mongoose.model('Client', clientScheme);

然后去创建/保存 - 这很容易,我只是给你看第一个client.json

   {
        "name":{
             "first":"John",
             "last":"Smith"
              },
        "address":"Avenue 1",
        "number": 7012341,
        "email":"john@gmail.com"
    }

然后,我需要通过名字获得此客户端。我试着:

clients.find({"name":{"first":"John"}})

不起作用。

怎么了?

3 个答案:

答案 0 :(得分:0)

你可以这样做:

db.clients.find({"name.first":"John"})

答案 1 :(得分:0)

您应该使用虚线表示法:

Client.find({"name.first": "John"}, function(err, clients){
    // your callback body here
});

答案 2 :(得分:0)

它不起作用,因为你试图找到一个名称为'的记录。完全是这样的:

{first: "John"}

但您的客户名称为:{first:" John",last:" Smith"}

因此,以下任何查询都会找到您的客户:

clients.find({"name.first": "John"}) or
clients.find({"name.last": "Smith"}) or
clients.find({"name": {first: "John", last: "Smith"}})

希望它有所帮助。