我在使用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"}})
不起作用。
怎么了?
答案 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"}})
希望它有所帮助。