【问题标题】:Mongo DB - newly created documents are not inserted in orderMongo DB - 未按顺序插入新创建的文档
【发布时间】:2020-05-05 04:36:44
【问题描述】:

我正在使用猫鼬创建新记录。有时,新记录不会位于所有现有文档的末尾,而是位于随机位置的中间。

我错过了什么吗?这是插入代码:

      app.post("/api/books", (req, res) => {
         console.log("POST ROUTE HIT!");
         console.log(req.body);
         db.Book
           .create(req.body)
           .then(dbModel => res.json(dbModel))
           .catch(err => res.status(422).json(err));
      });

我也有一条删除路线。为什么我的新记录有时会随机插入,有时会插入到最后?

【问题讨论】:

  • 你是怎么知道记录是随机插入的?从你的应用程序?您的应用是否根据排序顺序显示记录?
  • 您如何看到您的记录被放置在末尾或任意位置?
  • 我认为这是您获取记录时的排序问题。你必须按时间排序。因此,您可以从最新到旧或从旧到最新。
  • 我可以使用 ROBO3T 在数据库中看到它。这就是我的应用程序呈现它们的方式。我没有按任何顺序对其进行排序。我期待新添加的文档将插入到最后,就像在 SQL 中一样?
  • 它可以按你的意愿插入到最后,但你必须按排序顺序得到它。如果你不排序,那么它会随机返回。

标签: javascript node.js reactjs mongodb express


【解决方案1】:

您新创建的文档以默认的内部排序顺序(或natural order)插入,mongodb find 查询默认情况下并不总是对文档进行排序,除非您没有通过排序。它将按自然顺序从存储引擎返回记录

docs中所述:

结果排序

除非您指定 sort() 方法或使用 $near 运算符, MongoDB不保证查询结果的顺序。

因此,如果您想查看/获取按 _id/created 排序的所有文档,则需要手动将其放入查询中。

db.getCollection('books').find({}).sort({"_id": -1})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 2020-07-13
    • 2010-11-25
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    相关资源
    最近更新 更多