MongoDB $lookup 动态集合

8
我有以下模式,其中项目类型可能会变化,并且在“connections.kind”中提到。
var userSchema = new Schema({
  name: String,
  connections: [{
    kind: String,
    item: { type: ObjectId, refPath: 'connections.kind' }
  }]
});

var organizationSchema = new Schema({ name: String });

我试图进行动态查找以便填充item对象。但是这似乎行不通。
db.users.aggregate([
    {
        $lookup:{
            from: '$connections.kind',
            localField: 'connections.item',
            foreignField: '_id',
            as: 'items'
        }
    }
])

我知道可以使用 mongoose.populate 来实现,但想知道是否可以通过 $lookup 实现。

1
你可以使用 populate db.user.find({}).populate({path:"connections.item"})。 - Vaibhav Patil
from 将拥有集合的名称。 - nirvair
1个回答

6

目前来看,你不能这样做。 from 字段不能是表达式,必须是字符串文字。但是,有一个未解决的问题,你可以在这里跟踪,它似乎正是你需要的:https://jira.mongodb.org/browse/SERVER-22497


那么,如果要提供一个存在于不同数据库中的集合名称,该怎么办呢?$LookupFrom子句需要一个字符串而不是对集合的引用,例如var readDocs = new Mongo("mongodb://MongoR:<PWD>@<Server_name>:27017").getDB("<dbname>").collection_name - Anu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接