【问题标题】:how to get specific documents first and then rest in a mongodb?如何先获取特定文件,然后在 mongodb 中休息?
【发布时间】:2021-08-29 01:25:50
【问题描述】:

假设我的产品系列是这样的,

[

    {
          "id":1,
          "name":"laptop",
          "offer":false,
       },
    
       {
          "id":2,
          "name":"mobile",
          "offer":true,
          "offerEnd":"2-4-2022",
       },
    
       {
          "id":3,
          "name":"washing machine",
          "offer":false
       },
    
       {
          "id":4,
          "name":"t.v",
          "offer":false
       },
         {
          "id":5,
          "name":"refrigenerator",
          "offer":true,
          "offerEnd":"2-4-2025",
       },
       
       {
          "id":6,
          "name":"drone",
          "offer":false
       },

   
   ....
   ....

]

你可以在这里看到一些产品有报价(真)而其他没有(假)我希望提供的文件(即标记为真)首先出现,然后按降序排列。

请告诉我查询?

【问题讨论】:

  • 查询后排序可以吗?
  • 这能回答你的问题吗? MongoDB v2.4.9 sort by boolean field
  • 我想按降序排列整个文档
  • 这是一个围棋问题吗?还是纯粹是一个 mongodb 问题?
  • 纯粹在mongodb中。 Go 是后端

标签: database mongodb go


【解决方案1】:

Mongodb 有 $orderby 运算符,使用 go 你可以使用 findOptions 对结果进行升序或降序排序。 这是一个例子:

findOptions := options.Find()
// Sort by `offer` field descending
findOptions.SetSort(bson.D{{"offer", true}})


db.Collection("myCollection").Find(nil, bson.D{}, findOptions)

【讨论】:

  • 感谢@NelsonThiago 的回复。您的查询将产生按报价值排序的每个项目,而不是我想按降序对所有项目进行排序,并将提供的项目从该顺序放在第一位
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多