簡體   English   中英

mongodb排序問題

[英]Mongodb sorting issue

我的mongodb集合:

  [{
    "_id" : ObjectId("5dd6598d55396f36052e347d"),
    "isActive" : true,
    "myarray" : [
        {
            "my_id" : "5d967d08821b4031a197b002",
            "name" : "jack"
        },
        {
            "my_id" : "5d967d2c821b4031a197b003",
            "name" : "manison"
        }
    ]
  },
  {
    "_id" : ObjectId("5dd6598d55396f36052e347d"),
    "isActive" : true,
    "myarray" : [
        {
            "my_id" : "5d967d08821b4031a197b002",
            "name" : "penelope"
        },
        {
            "my_id" : "5d967d2c821b4031a197b003",
            "name" : "cruz"
        }
    ]
  }]

在這里,我試圖根據名稱進行排序。 不希望在數組內排序,但希望在數組外排序。

期待的結果就像

[{
  "_id" : ObjectId("5dd6598d55396f36052e347d"),
  "isActive" : true,
  "myarray" : [
    {
      "my_id" : "5d967d08821b4031a197b002",
      "name" : "penelope"
    },
    {
      "my_id" : "5d967d2c821b4031a197b003",
      "name" : "cruz"
    }
  ]
},{
  "_id" : ObjectId("5dd6598d55396f36052e347d"),
  "isActive" : true,
  "myarray" : [
    {
      "my_id" : "5d967d08821b4031a197b002",
      "name" : "jack"
    },
    {
      "my_id" : "5d967d2c821b4031a197b003",
      "name" : "manison"
    }
  ]
}]

"name" : "cruz" 首先出現,因為按字母順序排列的 C 比 J AND M 快(在第二個 json 中)

並且 Prenelop 和 cruz 沒有切換只是按照名稱順序切換的主文檔 json

我正在使用的查詢

db.traffic.aggregate([
  {$unwind: "$customFieldArray"}, 
  {$sort: {"customFieldArray.field_value":1}}, 
  {$group: {_id:"$_id", customFieldArray: {$push:"$customFieldArray"}}}
]);

但它在內部分類就像將克魯茲帶到佩內洛普,反之亦然。

並且主要 json 保持穩定。

請看一看

您可以使用sort游標進行簡單的find查詢

db.traffic.find({}).sort({ "myarray.name": -1 })

docs

對於數組,小於比較或升序比較數組的最小元素,大於比較或降序比較數組的最大元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM