即使字段類型不相同,我如何檢測重複?MongoDB:字段類型不同時發現重複
{id : 1 , price : 5}
{id : 2 , price : "6"}
{id : 3 , price : "5"}
所以重複是
{id : 1 , price : 5}
{id : 3 , price : "5"}
即使字段類型不相同,我如何檢測重複?MongoDB:字段類型不同時發現重複
{id : 1 , price : 5}
{id : 2 , price : "6"}
{id : 3 , price : "5"}
所以重複是
{id : 1 , price : 5}
{id : 3 , price : "5"}
您可以使用$substr
做索引0要轉換爲字符串-1(字符串的其餘部分)。 :
db.duplicates.aggregate(
[{
"$project": {
id: 1,
price: { $substr: ["$price", 0, -1] }
}
}, {
"$group": {
"_id": "$price",
"count": { "$sum": 1 },
"item": { $push: "$$ROOT" }
}
}, {
"$match": {
"_id": { "$ne": null },
"count": { "$gt": 1 }
}
}]
)
由$price
的聚集$group
的其餘計數OCCURENCES並具有一個計數> 1(一式兩份)匹配的項數。在item
,你有一個是重複的初始項目:
{ "_id" : "5", "count" : 2, "item" : [ { "_id" : ObjectId("58616dc177b68a6c54252bc8"), "id" : 1, "price" : "5" }, { "_id" : ObjectId("58616dc177b68a6c54252bca"), "id" : 3, "price" : "5" } ] }
要計算重複不同領域的數量,增加:
{
"$group": {
"_id": null,
"totalCount": {
"$sum": 1
}
}
}
謝謝,工作正常! – user3134277
我可以使用count()嗎? 我試過不成功....我怎麼能找到我有多少重複? – user3134277
我已經更新了我的帖子與不同的領域重複計數(例如,它會給1,因爲只有「5」這是重複 –
爲什麼你插入'在數字和字符串格式price',插入數字或字符串以避免特徵處理的更好方法。如果您事先知道'價格'將數字或字符串,那麼你可以相應地查詢 – Yogesh