【发布时间】:2022-01-07 03:56:27
【问题描述】:
我创建了一个按用户创建使用报告的管道。
我编写了所有管道并尝试进行最终合并,但我注意到在“on”处没有具有唯一 id 的字段。
我尝试使用$out,但我不能,因为我希望收藏集继续堆叠而不被覆盖。
我只想继续为我的结果插入新的 ObjectId。
$merge: {
into: "Report",
on: "?? don't have uniq field ... why we can't just make newId for each new documents!!",
whenMatched: "i just want to keep insert",
whenNotMatched: "insert",
}
我的最终文件看起来像
name:"개발"
userId: ObjectId(6049eeb428398a115cf83404)
purchaseBundleCnt:230
purchaseBundlePriceSum:5769500
yyyymmdd:20211001
在考虑了几种方法后,我发现通过拼接yyyymmdd和userId,可以创建一个唯一的id。但是因为不是ObjectID.Type,所以在on中是不接受的。
【问题讨论】:
-
Does this answer help?否则,由于您正在为每个用户制作报告,看来您可以使用 userId 作为唯一键,或者可能是
_id: { userId: ..., yyyymmdd: ... }的复合索引。 -
@RickN 是的,它似乎对我有帮助!我会试试谢谢!
标签: mongodb mongoose aggregation