2016-11-16 6 views
0

Ich arbeite an Mongodb distinct Abfrage, ich habe eine Sammlung mit wiederholten Eintrag, ich mache, wie die created_at. Aber ich möchte ohne wiederholte Werte holen.Wie finden Sie doppelte Werte in Mongodb mit unterschiedlichen Abfrage?

Beispiel JSON

{ 
    "posts": [{ 
     "id": "580a2eb915a0161010c2a562", 
     "name": "\"Ah Me Joy\" Porter", 
     "created_at": "15-10-2016" 
    }, { 
     "id": "580a2eb915a0161010c2a562", 
     "name": "\"Ah Me Joy\" Porter", 
     "created_at": "25-10-2016" 
    }, { 
     "id": "580a2eb915a0161010c2a562", 
     "name": "\"Ah Me Joy\" Porter", 
     "created_at": "01-10-2016" 
    }, { 
     "id": "580a2eb915a0161010c2bf572", 
     "name": "Hello All", 
     "created_at": "05-10-2016" 
    }] 
} 

MongoDB Abfrage

db.getCollection('posts').find({"id" : ObjectId("580a2eb915a0161010c2a562")}) 

Deshalb möchte ich über verschiedene Abfrage von mongodb wissen, bitte meine Post freundlich gehen und lassen Sie mich wissen.

+0

Was meinst du mit distinct zu finden? – hyades

+0

@hyades also wenn ich db.collection.find tun werde, wird es nicht die wiederholten Werte holen, es ignoriert die wiederholten Werte und zeigt nur eindeutige Ergebnisse ... –

+0

Ihre Sammlung hat mehrere Einträge für die 'id'. Wenn Sie nur eine wollen, können Sie 'findOne' versuchen, die eine zufällige wählen würde – hyades

Antwort

0

versuchen wie folgt:

db.getCollection('posts').distinct("id") 

Es alle eindeutigen IDs in der Sammlung zurück posts wie folgt:

["580a2eb915a0161010c2a562", "580a2eb915a0161010c2bf572"] 

Von MongoDB docs:

Das Beispiel verwenden, um die inventory Sammlung Diese enthält die folgenden Dokumente:

{ "_id": 1, "dept": "A", "item": { "sku": "111", "color": "red" }, "sizes": [ "S", "M" ] } 
{ "_id": 2, "dept": "A", "item": { "sku": "111", "color": "blue" }, "sizes": [ "M", "L" ] } 
{ "_id": 3, "dept": "B", "item": { "sku": "222", "color": "blue" }, "sizes": "S" } 
{ "_id": 4, "dept": "A", "item": { "sku": "333", "color": "black" }, "sizes": [ "S" ] } 

Um für ein Feld unterschiedliche Werte Return (dept):

db.inventory.distinct("dept") 

Die Methode gibt die folgende Array von unterschiedlichen Dept Werte:

[ "A", "B" ] 

Referenz:

  1. https://docs.mongodb.com/v3.2/reference/method/db.collection.distinct/
0

Wie pro mein Verständnis, Sie unterschiedliche Ergebnisse erhalten möchten, die die doppelte id in dieser Sammlung eliminiert sollte

von in mongodb verschiedene verwenden, wird es die Liste der unterschiedlichen Werte zurückgeben

db.getCollection('posts').distinct("id"); 
["580a2eb915a0161010c2a562", "580a2eb915a0161010c2bf572"] 

So sollten Sie Blick in mongodb Aggregation

db.posts.aggregate(
{ "$group" : { "_id" : "$id", "name" : {"$first" : "$name"}, "created_at" : {"$first" : "$created_at"} }} 
) 

Die Ausgabeliste der Ergebnisse sein werden, die die doppelte id Dokumente beseitigt

Verwandte Themen