2016-11-16 4 views
0

Я работаю над отдельным запросом Mongodb, у меня есть одна коллекция с повторной записью, я делаю это по созданному_адресу. Но я хочу получить без повторных значений.Как найти повторяющиеся значения в mongodb, используя отдельный запрос?

Пример 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 Запрос

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

Так я хочу знать о отчетливым запросе MongoDB, пожалуйста, любезно пройти через мой пост и дайте мне знать.

+0

Что вы понимаете, находя различный? – hyades

+0

@hyades, поэтому, когда я сделаю db.collection.find, он не будет получать повторяющиеся значения, он будет игнорировать повторяющиеся значения и отображать только уникальные результаты ... –

+0

У вас есть несколько записей для 'id'. Если вы хотите только один, вы можете попробовать 'findOne', который выбрал бы любой случайный – hyades

ответ

0

попытаться следующим образом:

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

Она возвращает все уникальные идентификаторы в коллекции posts следующим образом:

["580a2eb915a0161010c2a562", "580a2eb915a0161010c2bf572"] 

От MongoDB Документах

Пример использования inventory коллекции которое содержит следующие документы:

{ "_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" ] } 

Возврат Distinct значения для поля (dept):

db.inventory.distinct("dept") 

Метод возвращает следующий массив различных значений долговым:

[ "A", "B" ] 

Reference:

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

Согласно моему пониманию, вы хотите, чтобы получить отличные результаты, которые должны устраняют в этой коллекции

дубликат id Используя отличие в MongoDB, он будет возвращать список различных значений

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

Таким образом, вы должны смотреть в агрегацию MongoDB

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

выход будет список результатов, которые устраняют дубликаты id документов