【问题标题】:Mongodb $lookup dynamic collectionMongodb $lookup 动态集合
【发布时间】:2021-09-17 01:37:17
【问题描述】:

我有以下架构,其中项目类型可能会有所不同,并在 connections.kind 中提到。

var userSchema = new Schema({
  name: String,
  connections: [{
    kind: String,
    item: { type: ObjectId, refPath: 'connections.kind' }
  }]
});

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

我正在尝试进行动态查找,以便填充项目对象。但这似乎不起作用。

db.users.aggregate([
    {
        $lookup:{
            from: '$connections.kind',
            localField: 'connections.item',
            foreignField: '_id',
            as: 'items'
        }
    }
])

我知道我可以用 mongoose.populate 做到这一点,但想知道 $lookup 是否有可能

【问题讨论】:

  • 您可以使用填充 db.user.find({}).populate({path:"connections.item"})
  • from 将具有集合的名称。

标签: node.js mongodb mongoose


【解决方案1】:

到目前为止,你不能。 from 字段不能是表达式,必须是字符串文字。但是,您可以在此处跟踪一个未解决的问题,这似乎正是您所需要的:https://jira.mongodb.org/browse/SERVER-22497

【讨论】:

  • 那么,除了使用 $Lookup 的 from 子句之外,应该有什么方法来提供存在于不同数据库中的集合名称? Fromclause 需要一个 str 而不是集合的引用,例如 var readDocs = new Mongo("mongodb://MongoR:<PWD>@<Server_name>:27017").getDB("<dbname>").collection_name
猜你喜欢
  • 2021-02-22
  • 2019-01-28
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多