【问题标题】:How to query a document with the highest value of a field如何查询具有最高字段值的文档
【发布时间】:2019-09-08 06:19:42
【问题描述】:

假设我有一个文档集合。为了简单起见,假设所有这些文档只有 2 个字段,名称和 id,如下所示。

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

[
  {
    name: "name1",
    id: 1
  }
  {
    name: "name2",
    id: 2
  }
  {
    name: "name1",
    id: 3
  }
  {
    name: "name1",
    id: 0
  }
]

【问题讨论】:

    标签: javascript arrays mongodb object mongoose


    【解决方案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%; }

    【讨论】:

      【解决方案2】:

      先降序排序,再取第一个:

      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);

      【讨论】:

        【解决方案3】:

        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]

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-09-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-30
          • 1970-01-01
          相关资源
          最近更新 更多