Node.js 如何从mongoose中的嵌套对象中获取值?

Node.js 如何从mongoose中的嵌套对象中获取值?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一些关于使用mongoose模块的NodeJ的代码,我需要得到嵌套值,让我向您展示: 我创建模式 var clientScheme = mongoose.Schema({ name: Object address: String, number: Number, operator: Object, services: Object, email: String }) 然后我创建模型: var Client = mongoose.model('

我有一些关于使用mongoose模块的NodeJ的代码,我需要得到嵌套值,让我向您展示:

我创建模式

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"}})
不起作用


有什么问题吗?

您可以通过以下方式完成此操作:

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

您应该使用虚线表示法:

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

它不起作用,因为您试图找到一个“名称”与以下内容完全相同的记录:

{first: "John"}
但是你的客户的名字是:{第一个:“约翰”,最后一个:“史密斯”}

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

clients.find({"name.first": "John"}) or
clients.find({"name.last": "Smith"}) or
clients.find({"name": {first: "John", last: "Smith"}})
希望能有帮助