【问题标题】:How to sort in mongoDb using gem 'mongo' with Ruby (Sinatra)?如何使用宝石'mongo'和Ruby(Sinatra)在mongoDb中排序?
【发布时间】:2016-05-19 09:33:15
【问题描述】:

我在红框中为排序节目编号

我有以下代码,但我未能对从 MongoDb 获取的数据进行排序。

display_order = 数据库中的字段

MongoConnect = Mongo::Client.new(127.0.0.1:27017, :database => 'my_db')

MongoConnect[:clients].find(:year => '2015').sort({month: 1})

我搜索到 sort function 只有 2 个可能的值:

1 是升序

-1 降序

这似乎是正确的,因为我尝试输入 'asc/desc' 或 'ascending/descending' 值,但我收到错误为 Invalid value for sort。

正如您在屏幕截图中看到的,排序未正确完成。 它首先使用 1 对数据进行排序。

但是我想按升序顺序对其进行排序。

是由于 STRING 数据造成的吗?如果我该如何解决?

请帮忙!

【问题讨论】:

  • 我不确定问题是什么 - 您已经正确确定排序顺序需要为 1 或 -1 而不是 :asc 或类似的。接下来会发生什么?
  • 嗨@FrederickCheung,是的,似乎代码是正确的,但输出不是。请查看排序输出的屏幕截图。

标签: ruby mongodb sorting


【解决方案1】:

如果您的字段包含字符串,它们将按原样进行排序。如果您希望它们按整数排序,则必须将它们存储为整数。

【讨论】:

  • 嗨@Fred。我之前也有同样的想法。谢谢你提醒我。
【解决方案2】:

我的错误,我之前认为我在创建记录时不能使用 unqouted 值,因为我使用 mongo-express 作为 GUI

我为 month 字段添加价值的第一种方式:

{
    "_id": ObjectID(""),
    "year": "2015",
    "month": "1",
    "value": "90"
}

我认为,值应该总是被引用

现在,我的排序功能正在运行。只需删除 qoutes 作为 month 字段的设置值。

如下图:

{
    "_id": ObjectID(""),
    "year": "2015",
    "month": 1,
    "value": "90"
}

我希望这对其他人有所帮助,不要犯我犯的同样错误:D

【讨论】:

    猜你喜欢
    • 2011-06-23
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多