gpt4 book ai didi

mongodb - 如何查找数组中的重复元素(一个文档)?

转载 作者:可可西里 更新时间:2023-11-01 09:47:27 26 4
gpt4 key购买 nike

如何返回 MongoDB 中存在的数组中的重复元素(忽略大小写)?

输入(MongoDB中的文档)

 {
"userID" : "USER001",
"userName" : "manish",
"collegeIDs" : [
"COL_HARY",
"COL_MARY",
"COL_JOHNS",
"COL_CAS",
"COL_JAMES",
"col_mary",
"COL_JOHNS",
"COL_JOHNS"
]
}

预期输出:

{ "collegeIDs" : ["COL_MARY", "col_mary", "COL_JOHNS"] }

注意:

  1. 只检查内容,不检查大小写。
  2. 返回列表中的所有可能性

我尝试过的

db.myList.aggregate([
{"$project": {"collegeIDs":1}},
{"$unwind":"$collegeIDs"},
{"$project": {"collegeIDs": {"$toLower": "$collegeIDs"}}},
{"$group": {"_id":{"_id":"$_id", "cid":"$collegeIDs"}, "count":{"$sum":1}}},
{"$match": {"count":{"$gt":1}}},
{"$group": {"_id": "$_id._id", "collegeIDs": {"$addToSet":"$_id.cid"}}}
])

最佳答案

以下查询可以获得预期的输出:

db.check.aggregate([
{
$unwind:"$collegeIDs"
},
{
$addFields:{
"collegeIdToLower":{
$toLower:"$collegeIDs"
}
}
},
{
$group:{
"_id":"$collegeIdToLower",
"collegeIDs":{
$addToSet:"$collegeIDs"
},
"count":{
$sum:1
}
}
},
{
$match:{
"count":{
$gt:1
}
}
},
{
$unwind:"$collegeIDs"
},
{
$group:{
"_id":"NO_ID",
"collegeIDs":{
$push: "$collegeIDs"
}
}
},
{
$project:{
"_id":0
}
}
]).pretty()

输出:

{
"collegeIDs" : [
"col_mary",
"COL_MARY",
"COL_JOHNS"
]
}

我们不会将实际的大学 ID 转换为较低的字符串,而是为其添加一个字段并用于分组。

关于mongodb - 如何查找数组中的重复元素(一个文档)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57379034/

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