我有一个包含一系列对象的集合(我只是放了一些字段,架构运行正常)。
收藏联系人:
title: {
type: String,
label: "Title",
max: 200
},
adresses: {
type: [Object],
optional: true
},
"adresses.$.id": {
type: String,
label: "ID"
},
"adresses.$.street": {
type: String,
label: "street",
decimal: true,
optional: true
}
当我做的时候:
db.contacts.findOne({_id: "59gXADmH9GLNDjELo"}, {adresses: {$elemMatch:
{id: "xpdYRKGGjHJLnCevM"}}});
在Mongo DB控制台上,它返回:
{
"_id" : "59gXADmH9GLNDjELo",
"adresses" : [
{
"id" : "xpdYRKGGjHJLnCevM",
"street" : "FakeStreet123"
}
]
}
就像我想要的那样 - 只是阵列的一个元素。
当我在Meteor(浏览器控制台)上执行相同操作时:
Contacts.findOne({_id: "59gXADmH9GLNDjELo"}, {adresses: {$elemMatch:
{id: "xpdYRKGGjHJLnCevM"}}});
我得到了数组的所有元素。怎么解决这个?我想要与Mongo DB中的结果相同。
答案 0 :(得分:2)
您可以使用._find()
下划线方法只检索所需的文档:
var doc = Contacts.findOne(
{_id: "59gXADmH9GLNDjELo"},
{adresses: {
$elemMatch: {id: "xpdYRKGGjHJLnCevM"}
}
}),
address = _.find(doc.adresses, function(address) {
return address._id === "xpdYRKGGjHJLnCevM"
});