MongoDB - 如何查找()集合中具有对另一个集合的引用的字段?

时间:2016-10-19 19:52:52

标签: mongodb meteor meteor-blaze angular-meteor angular2-meteor

所以我在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。

1 个答案:

答案 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)
            }
        },
    ]
});