如何查询具有最大字段值的文档

时间:2019-04-17 23:04:57

标签: javascript arrays mongodb object mongoose

假设我有一些文件。为了简化起见,假设所有这些文档只有两个字段,名称和ID,如下所示。

我想获取“ id”值最大的文档。我可以将.find({})与某些参数一起使用吗?如果是这样,我就找不到哪个参数可以找到某个字段的最大值。

<meta http-equiv="X-UA-Compatible" content="IE=8">

3 个答案:

答案 0 :(得分:1)

let documents = [
  {
    name: "name1",
    id: 1
  },
  {
    name: "name2",
    id: 2
  },
  {
    name: "name1",
    id: 3
  },
  {
    name: "name1",
    id: 0
  }
];

let max = documents.sort( (a, b) => a.id > b.id ? -1 : 1)[0]
console.log( max );

怎么样 let maxIdDocument = documents.sort( (a, b) => a.id > b.id ? 1 : -1)[0]

答案 1 :(得分:1)

首先,以降序排列,然后得到第一个:

const arr = [{
    name: "name1",
    id: 1
  },
  {
    name: "name2",
    id: 2
  },
  {
    name: "name1",
    id: 3
  },
  {
    name: "name1",
    id: 0
  }
];

const [greatest] = arr.sort(({ id: a }, { id: b }) => b - a);

console.log(greatest);

答案 2 :(得分:1)

您可以对该数组进行排序,并使用函数pop获得具有最大id的对象。

arr.slice() // This is to avoid a mutation on the original array.

let arr = [   {     name: "name1",     id: 1   },   {     name: "name2",     id: 2   },   {     name: "name1",     id: 3   } ,  {     name: "name1",     id: 0   } ],
    greatest = arr.slice().sort(({id: a}, {id: b}) => a - b).pop();

console.log(greatest);
.as-console-wrapper { min-height: 100%; }