mongodb - 当不同的太大时,在数组中获取不同的值,16mb 上限
问题描述
我在产品集合中有以下文件:
{
"_id": "1",
"labels": ["item-1", "item-2"]
},
{
"_id": "2",
"labels": ["item-1", "item-4"]
}
我正在尝试获取每个文档的“标签”数组中所有不同值的列表:
item-1
item-2
item-4
"errmsg" : "distinct too big, 16mb cap"
运行 distinct 命令时出现错误:
db.products.distinct("labels")
我尝试运行一个聚合函数,但我得到了标签的组合,而不是不同标签的列表。如何使 $group 返回单个标签的不同列表,而不是标签的不同组合?
[
{
$group: {
_id : "$labels"
}
}
]
解决方案
您可以使用 unwind 和 group
db.collection.aggregate([
{ "$unwind": "$labels" },
{
"$group": {
"_id": null,
"labels": { "$addToSet": "$labels" }
}
}
])
工作Mongo游乐场
推荐阅读
- javascript - 如果我不 removeEventListener (JavaScript) 会发生什么?
- vba - 指定发件人电子邮件
- android - 如何在 RecyclerView 中创建粘性标题,如所附图片?
- python-3.x - python xlsxwriter 从单元格中提取值
- java - 在接口的两个实现之间移动公共代码
- html - 如何将 thymeleaf 表单中的两个对象传递给 Spring Controller?
- javascript - React JS npm 开始给端口忙,但它是免费的
- python - 带有分号数据的字典到 Pandas Dataframe
- python-3.x - Python NetworkX:节点收缩后的图形更新
- r - 是否有 R 函数可以以这种形式获取我的数据库?尝试收集并没有解决我的问题