在MongoDB聚合过程中,是否可以为每个文档创建一个唯一的ID



我创建了一个管道,用于按用户创建使用情况报告
我编写了所有的管道,并试图进行最终合并,但我注意到没有具有唯一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

在考虑了几种方法后,我发现通过连接yyyymmdduserId,可以创建一个唯一的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()
}

我没有尝试,但我希望这对你有用。

最新更新