我将数据存储在一个集合中,如下所示:
{
"_id" : ObjectId("..."),
"content" : [
["a","b",7],
["a","b",19],
["c","c",3],
["d","a",5]
]
}
我想从集合中获取一条记录(这很容易),但我希望使用每个数组的第3列返回按内容排序的数据。意思是,我想取回记录(如上所示),但要对内容进行排序,以便:
"content" : [
["c","c",3],
["d","a",5],
["a","b",7],
["a","b",19]
]
这可能吗?或者我只是需要获取项目然后在服务器端排序?
注意:我正在使用Ruby mongo驱动程序
答案 0 :(得分:0)
例如:
hash = {
"_id" => "id",
"content" => [
["a","b",7],
["a","b",19],
["c","c",3],
["d","a",5]
]
}
hash["content"].sort!{|a,b| a.last <=> b.last}
p hash # => {"_id"=>"1", "content"=>[["c", "c", 3], ["d", "a", 5], ["a", "b", 7], ["a", "b", 19]]}
答案 1 :(得分:0)
我也意识到拥有这个嵌套数组比仅拥有一个对象数组更令人痛苦,所以我正在根据我的情况改变它。虽然有一些关于支持嵌套位置运算符的讨论:http://jira.mongodb.org/browse/SERVER-831
答案 2 :(得分:0)
您需要获取并排序客户端。 MongoDB不对嵌套对象进行排序。如果您希望MongoDB对其进行排序,则必须将“内容”数据分解为自己的集合。