我正在尝试将以下 MongoDB 查询转换为等效的 Scala
db.getCollection("shop-items").aggregate([
{
$bucketAuto: {
groupBy: "$prices.avg",
buckets: 50,
output: {
"items" : {
$push: "$$ROOT"
},
"count": { $sum: 1 },
}
}
},
{$addFields: {"start": {$floor :{$multiply: [ { $rand: {} }, "$count"]}}}},
{$project : { _id: 0, items: {$slice: ["$items", "$start", 20]}}},
{$unwind: "$items"}
])
目前我有
collection.aggregate(
List(
bucketAuto("$prices.avg", 100, BucketAutoOptions().output(
push("items", "$$ROOT"),
sum("count", 1)
)),
addFields(
Field("start",
Document(
Document(
Document(
"$multiply" -> Seq(Document("$rand" -> Document(), "$count"),
)
)
)
)
)
),
project(fields(excludeId(), computed("items", Document("$slice" -> Seq("$items", "$start", 10))))),
unwind("$items")
)
)
然而,$multiply
和$slice
文件都是无效的,因为Document
只需要 Seq 的 2 个项目?
我不确定如何创建Document
对象以传递给不具有$multiply
和$floor
?等功能的运算符的查询创建者。