如何选择要在mongodb排序结果中显示哪些字段?

时间:2018-02-22 12:18:17

标签: mongodb

在mongodb中我想根据属性X在集合中找到一些文档,按属性Y对它们进行排序,然后只显示属性Z,即。

之类的东西
db.getCollection('something')
.find({X: "blah"})
.sort({Y: -1})
.find({}, {Z: 1})

但是mongo抱怨说

Error: TypeError: db.getCollection(...).find(...).sort(...).find is not a function

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您要找的是projection。完整详情in the docs

例如,在您的情况下,它应该类似于:

 db.getCollection('something')
    .find({ X: "blah" }, { Z: 1 }).
    .sort({ Y: -1 })

但如果你正在寻找更高级的东西,你也可以使用aggregation。类似的东西:

db.getCollection('something').aggregate([
    { $match: { X: "blah" }},
    { $sort: { Y: -1 }},
    { $project: { Z: 1 }}
])

答案 1 :(得分:0)

可能问题在于同时使用two find()功能。

如果您只想在结果中显示z,请执行此操作

db.getCollection('something')
.find({X: "blah"},'-_id z')
.sort({Y: -1});