Mongodb'de kopyalar nasıl bulunur?
MongoDB’de yinelenen değerlere sahip belgeleri bulmak için aşağıdaki sözdizimini kullanabilirsiniz:
db.collection.aggregate([ {" $group ": { "_id": " $field1 ", "count": { " $sum ": 1 } } }, {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, {" $project ": {"name": " $_id ", "_id": 0} } ])
İşte bu sözdiziminin yaptığı şey:
- Alan 1’de aynı değere sahip tüm belgeleri gruplandırın
- Birden fazla belgeye sahip grupları eşleştirin
- Birden fazla belgeye sahip tüm grupları projelendirin
Bu özel sorgu, field1 sütununda yinelenen değerleri arar. Arama yapılacak alanı değiştirmek için bu değeri düzenlemeniz yeterlidir.
Aşağıdaki örnek, bu sözdiziminin aşağıdaki belgelere sahip bir koleksiyon ekibiyle nasıl kullanılacağını gösterir:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 }) db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 22 }) db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 }) db.teams.insertOne({team: " Rockets ", position: " Forward ", points: 26 }) db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
Örnek: Yinelenen değerlere sahip belgeleri bulma
“Takım” sütunundaki tüm yinelenen değerleri bulmak için aşağıdaki kodu kullanabiliriz:
db.teams.aggregate([ {" $group ": { "_id": " $team ", "count": { " $sum ": 1 } } }, {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, {" $project ": {"name": " $_id ", "_id": 0} } ])
Bu sorgu aşağıdaki sonuçları döndürür:
{ name: 'Rockets' } { name: 'Mavs' }
Bu bize “Rockets” ve “Mavs” değerlerinin “takım” alanında birden çok kez göründüğünü söylüyor.
Bunun yerine “pozisyon” alanında yinelenen değerleri aramak için $team’i $position ile değiştirebileceğimizi unutmayın:
db.teams.aggregate([ {" $group ": { "_id": " $position ", "count": { " $sum ": 1 } } }, {" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } }, {" $project ": {"name": " $_id ", "_id": 0} } ])
Bu sorgu aşağıdaki sonuçları döndürür:
{ name: 'Guard' }
Bu bize “Pozisyon” alanında “Guard”ın birkaç kez göründüğünü söyler.
Ek kaynaklar
Aşağıdaki eğitimlerde MongoDB’de diğer yaygın işlemlerin nasıl gerçekleştirileceği açıklanmaktadır:
MongoDB: Koleksiyona yeni bir alan nasıl eklenir?
MongoDB: Nasıl gruplandırılır ve sayılır?
MongoDB: Birden fazla alana göre nasıl gruplandırılır