2015-03-31 123 views
1

我需要的文檔只能用不同的值mongodb。如何選擇不同的記錄

SQL應該是這樣的:SELECT DISTINCT engine_type_id FROM cars 但我不知道如何讓蒙戈相同的行爲。

提前致謝。

P.S.我嘗試使用mongo的distinct方法,但它返回不同的engine_type_id數組而不是整個文檔。所以對我來說這不起作用。

+2

看(http://stackoverflow.com/questions/12183444/getting-a-distinct-聚集數組字段 - 跨索引),它爲包含單個或多個值的任何字段返回不同的值。因此根據您的需要,您必須編寫一些[彙總](http://docs.mongodb.org/manual/reference/method/db.collection.aggregate/)。閱讀更多關於[mongodb distinct](http://docs.mongodb.org/manual/reference/method/db.collection.distinct/)的功能。 – Braj 2015-03-31 09:24:03

+0

哪些文檔具有'engine_type_id'的給定值,是否需要使用'engine_type_id'的不同值?一個不同的價值(哪一個?),所有這些?從技術上講,檢索集合中的所有文檔都會找到'engine_type_id'的不同值以及具有這些值的所有文檔,因此您需要更具體地瞭解您想要的內容。 – wdberkeley 2015-03-31 15:56:49

回答

0

我們可以使用distinct方法與參數。

這裏是我得到的所有ID: ids = db.cars .distinct("_id", "engine_type_id")

接下來,我可以打與一個查詢DB: db.cars.find({"_id": {$in: ids}})

所以,這一切!

對於那些使用紅寶石MongoMapper誰,請看看這裏:這個[POST]

ids = MongoMapper.database.eval("db.cars.distinct('_id', 'engine_type_id'})") 
Car.where(_id: { :$in => ids }) 
0

使用:

SELECT DISTINCT engine_type_id FROM cars 

一個SQL數據庫將只返回engine_type_id場,如果有兩輛車具有相同的engine_type_id顏色另一列命名,但他們對於該列不同的值。查詢結果中顏色列的值是多少?

+2

這不是一個答案,什麼是「汽車」專欄?我在他的問題中沒有看到它 – Sammaye 2015-03-31 09:37:25

+0

對不起,這是因爲我無法評論。顏色列是我用來解釋的假設列,不可能僅使用該查詢返回多列。 – namelivia 2015-03-31 10:57:51