在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
我该怎么做?
答案 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});