我创建了一个管道,用于按用户创建使用情况报告
我编写了所有的管道,并试图进行最终合并,但我注意到没有具有唯一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
中不接受它。
我不知道我是否说对了,但如果你想在属性上为生成一个唯一的id,你可以尝试以下操作:
你可以在require('mongose'(.Types.上找到ObjectId构造函数
var mongoose = require('mongoose');
$merge: {
into: "Report",
on: mongoose.Types.ObjectId()
}
对于Mongoose 6,您必须在呼叫前加上new:
$merge: {
into: "Report",
on: new mongoose.Types.ObjectId()
}
我没有尝试,但我希望这对你有用。