Mongodb $lookup 动态集合
Posted
技术标签:
【中文标题】Mongodb $lookup 动态集合【英文标题】:Mongodb $lookup dynamic collection 【发布时间】: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
将具有集合的名称。
【参考方案1】:
到目前为止,你不能。 from
字段不能是表达式,必须是字符串文字。但是,您可以在此处跟踪一个未解决的问题,这似乎正是您所需要的:https://jira.mongodb.org/browse/SERVER-22497。
【讨论】:
那么,除了使用 $Lookup 的 from 子句之外,应该有什么方法来提供存在于不同数据库中的集合名称?From
clause 需要一个 str 而不是集合的引用,例如 var readDocs = new Mongo("mongodb://MongoR:<PWD>@<Server_name>:27017").getDB("<dbname>").collection_name
以上是关于Mongodb $lookup 动态集合的主要内容,如果未能解决你的问题,请参考以下文章
如何在 mongodb 中使用 $lookup 加入多个集合