gpt4 book ai didi

mongodb - 获取每个 MongoDB 聚合组的样本

转载 作者:可可西里 更新时间:2023-11-01 09:39:31 25 4
gpt4 key购买 nike

我有一个 MongoDB 文档集合,该集合具有两个属性:类型和值。

[
{type: "A", value: "1"},
{type: "A", value: "2"},
{type: "B", value: "1"},
{type: "B", value: "2"},
{type: "C", value: "1"},
{type: "C", value: "2"}
]

如何在不涉及任何 JavaScript 的情况下使用单个查询获取每种类型的随机文档?

我试图使用聚合框架找出一些东西

db.collection.aggregate([
{$group: {_id: "$type", item: {$push: "$$ROOT"}}},
{$sample: {size: 1}}
]);

它不对每个组应用采样,而是简单地选择其中一个组。

最佳答案

或者,您可以迭代所有分组元素并以不同于 $sample 的另一种方式处理随机数:

db.collection.aggregate([
{ $group: { _id: "$type", item: { $push: "$$ROOT" } } }
]).forEach(function(data) {
var rand = data.item[Math.floor(Math.random() * data.item.length)];
// insert in a new collection if needed
// db.results.insert(rand);
printjson(rand);
});

从数组中随机选取一个元素:Getting a random value from a JavaScript array

如果您的集合中有大量不同的 type 值,此解决方案可能会很慢,因为它不使用聚合

关于mongodb - 获取每个 MongoDB 聚合组的样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40331022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com