【问题标题】:What is the difference between find({}, {sort: ...}) and find().sort(...)?find({}, {sort: ...}) 和 find().sort(...) 有什么区别?
【发布时间】:2017-03-19 13:13:46
【问题描述】:

在 MongoDB 文档中,当我搜索排序时,它会将我定向到 cursor.sort() page。 (顺便说一句,文档没有指定此方法返回的内容。)。所以我在我的流星脚本Collection.find().sort('date':1) 中使用了它,但有人抱怨 find().sort 不是一个函数。 (我认为find() 确实返回了一个游标,不是吗?)

所以我做了一些进一步的搜索,发现一些教程告诉我使用 find({}, {sort: ...})。

那么这两种方法有什么区别呢?

【问题讨论】:

    标签: mongodb sorting meteor


    【解决方案1】:

    使用 find({}, sort... 要求 Mongo 进行排序,这是最有效的方式,因为如果字段被索引,数据库服务器可以优化排序。

    Meteor 不提供完整的 Mongo api,因为浏览器中的 mini Mongo 确实具有所有功能,并且他们希望在客户端和服务器中提供一致的 api。

    我还没有检查它,但我认为如果你在 find 和 sort 之间添加一个 fetch() 它将起作用,因为 fetch 将返回一个可排序的数组

    【讨论】:

    • fetch() 会将光标更改为数组,这会破坏我脚本中的其他内容...
    • 听起来有点像绑定,因为我猜 Meteor 不支持对光标进行排序 :)
    【解决方案2】:

    在 Meteor 框架中,有些事情你需要用 Meteor 的方式来做!
    只需使用Meteor Docs 中指定的Collection.find,并传递Sort Specifier

    这两者有什么区别?
    一个被 Meteor 包裹,在框架内工作,另一个没有!

    我不相信您会看到框架中的“Meteor api”与(非流星)nodejs 中的“标准 MongoDB api”之间有任何性能差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      • 2012-08-20
      相关资源
      最近更新 更多