我想在具有特定属性值最高值的集合中找到一个文档。
假设文档具有以下结构
{
_id: 'jswehfkwefkjw',
price: 10,
....
}
如何选择价格最高的文件?
我发现了这个
transactions.find("id" => x).sort({"sellprice" => -1}).limit(1).first();
但我无法将其转化为流星:(我现在看起来像这样
Articles.find({}, {sort: {price: -1}}).fetch();
但这并不是这样。有什么建议吗?
答案 0 :(得分:12)
我并不完全明白你的意思"这没有做到"。
但是我建议使用findOne而不是fetch,因为fetch会返回一个数组而你需要一个文档。
Articles.findOne({}, {sort: {price: -1}});
或
Articles.find({},{limit: 1, sort: {price: -1}});
然后使用fetch并使用数组表示法[0]或下划线_.first(数组)
获取第一个元素答案 1 :(得分:1)
与mongo版本一样,如果要对返回的对象进行排序和限制,则需要同时提供排序和限制选项。两者都在meteor docs on find()中描述。
如果您想要返回一个价格最高的项目的光标,那么这应该有效:
Articles.find({},{limit: 1, sort: {price: -1}});
如果你想要对象本身,那么添加fetch()或使用findOne()。如果使用findOne(),则limit选项是多余的。