所以我在Projects集合中有这个字段contacts.envCon.name
但是当我在mongo中看到它们时它们是这样的:
"envCon" : {
"$ref" : "contacts",
"$id" : ObjectId("5807966090c01f4174cb1714")
}
根据过去的ObjectId做一个简单的查找:
db.getCollection('contacts').find({_id:ObjectId("5807966090c01f4174cb1714")})
我得到以下结果:
{
"_id" : ObjectId("5807966090c01f4174cb1714"),
"name" : "Terracon"
}
顺便说一句:如果无论如何直接使用发布/制作方法,我都会使用Meteor。
答案 0 :(得分:0)
是的,您可以使用非常受欢迎的reywood:publish-composite软件包在发布内执行 join 。
使用您的模型:
Meteor.publishComposite('projectsWithContacts', {
find: function() {
return Projects.find(); // all projects
},
children: [
{
find: function(p) { // p is one project document
return Contacts.find(
{ _id: p.envCon.$id }, // this is the relationship
{ fields: { name: 1 } }); // only return the name (_id is automatic)
}
},
]
});