MongoDB的。如何选择不同的记录

时间:2015-03-31 09:04:00

标签: mongodb mongomapper

我只需要使用不同的值来获取文档

SQL应该是这样的:SELECT DISTINCT engine_type_id FROM cars 但我不知道如何在mongo中获得相同的行为。

提前感谢。

P.S。我尝试使用mongo的distinct方法,但它返回不同的engine_type_id数组,而不是整个文档。不幸的是,这对我不起作用。

3 个答案:

答案 0 :(得分:0)

使用:

SELECT DISTINCT engine_type_id FROM cars
SQL数据库上的

只返回engine_type_id字段,如果有两辆汽车具有相同的engine_type_id,另一列名为color,但它们具有不同的值。查询结果中颜色列的值是什么?

答案 1 :(得分:0)

我们可以将distinct方法与 2 参数一起使用。

以下是我获取所有ID的方法: ids = db.cars .distinct("_id", "engine_type_id")

接下来我可以使用下一个查询命中db: db.cars.find({"_id": {$in: ids}})

所以,就是这样!

对于那些使用ruby和MongoMapper的人,请看一下:

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

答案 2 :(得分:0)

您用mongomapper标记了此名称,但同一个synax也适用于mongoid。

以下是对我有用的答案:

ap WaterSupply.distinct(:thread_type)
[
    [0] "NST",
    [1] "5\" NST",
    [2] "",
    [3] "JSN"
]

您还可以使用scope / where子句将其链接:

org.users.active.distinct(:role_ids)