最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Mongodb以自然顺序聚合

网站源码admin18浏览0评论

Mongodb以自然顺序聚合

Mongodb以自然顺序聚合

我正在寻找一种查询数据库以获取集合中最后保存的条目的方法。我有一个将文档保存到集合的功能,这就是我保存的集合的样子。

{
  "_id": {
    "$oid": "5ebbf2b4586b4946226e2c88"
  },
  "name": "Stept_1",
  "description": "",
  "coordinates": {
    "pose": {
      "$numberInt": "0"
    },
    "x": {
      "$numberDouble": "-9.760518723445719"
    },
    "y": {
      "$numberDouble": "-3.4586615766853854"
    },
    "z": {
      "$numberInt": "0"
    }
  },
  "depth": {
    "$numberInt": "1"
  },
  "_neighbours": [],
  "optional": {},
  "__v": {
    "$Reference": "1111111"
  }
}

每个文档都按名称升序保存,例如name:Step_1, Step_2 etc。我尝试使用像

这样的聚合方法来获取最后保存的文档
db.collection.aggregate([
      { $sort: { name: -1 } },
      { $group: { _id: "$Reference", name: { $first: "$name" } } }
    ])

这将按升序返回数据,直到name:Step_10,即“ Step_1,2,3,...”,但在name:Step_1o之后,如果我重新启动应用程序并再次开始获取最后保存的文档,则返回升序索引到name:Step_9,然后导致一些文件的重复条目。我正在寻找的是,在获取这些文档时,它应该始终遵循自然顺序(即Step_1,2,3,.. 11,12,13等)。提前致谢。

回答如下:

您可以使用归类来强制数字排序,如下所示:

db.collection.aggregate([
      { $sort: { name: -1 } },
      { $group: { _id: "$Reference", name: { $first: "$name" } } }
    ], 
    { collation : { 
        locale: "en_US", 
        numericOrdering: true 
    }} 
)

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论