mongodb - 在 Mongo DB 中查找所有具有重复值的对象
问题描述
如何从所有对象name
都相同的集合中返回所有对象?
例如在这种情况下name: John
[
{
_id: 1,
name: "John",
last: "Smith"
},
{
_id: 8,
name: "John",
last: "Snow"
},
{
_id: 16,
name: "John",
last: "McKay"
},
]
解决方案
您可以使用 group in aggregate 返回所有具有相同名称的数据
db.collection.aggregate([
{
"$group": {
"_id": "$name",
"orig": {
"$push": "$$ROOT"
}
}
},
{
"$addFields": {
"sizeOrig": {
$size: "$orig"
}
}
},
{
"$match": {
sizeOrig: {
$gt: 0
}
}
},
{
$unwind: "$orig"
},
{
"$replaceRoot": {
"newRoot": "$orig"
}
}
])
示例:https ://mongoplayground.net/p/DfTA6_pUaRA
但是如果你想要每个重复的单个数据,你需要按组来做
db.collection.aggregate([
{
"$group": {
"_id": "$name",
"orig": {
"$push": "$$ROOT"
}
}
}
])
推荐阅读
- firebase - 为什么这不允许我获取文档字段值?
- mongodb - 查询 mongo 数据是否包含数组中的值
- javascript - 从类转换为具有组合父子的功能组件
- google-apps-script - newTrigger AppsScript 未出现在 UI 中
- javascript - SAP UI5:如何在 Javascript 中读取嵌套 odata 对象中的数据?
- r - 我正在使用 R 中的 ... 作为我正在制作的函数中的控制变量,如何将控制变量转换为列表?
- android - IllegalStateException 崩溃:移动到第二个活动以使用使用 Kotlin 的 Searchview 时,搜索不能为空
- assembly - 6502 汇编二进制到 bcd - 在 x86 上可能吗?
- javascript - 如何更改 react-select Select 元素的边框?
- actions-on-google - last_simple 如何在 Actions Builder 中工作?