【发布时间】:2015-02-25 12:18:10
【问题描述】:
这是我在集合中的数据:
{ "installation" : 200278 ,
"date" : [
{ "date" : "2014-12-28" ,
"values" : [
{ "time" : "2014-12-28 00:15:26" , "value" : 26},
{ "time" : "2014-12-28 00:30:26" , "value" : 15} ,
{ "time" : "2014-12-28 00:45:26" , "value" : 7} ,
{ "time" : "2014-12-28 01:00:26" , "value" : 32}
]
},
{ "date" : "2014-12-29" ,
"values" : [
{ "time" : "2014-12-29 00:15:26" , "value" : 26},
{ "time" : "2014-12-29 00:30:26" , "value" : 15} ,
{ "time" : "2014-12-29 00:45:26" , "value" : 7} ,
{ "time" : "2014-12-29 01:00:26" , "value" : 32}
]
}
]
},
{ "installation" : 200312
...
我尝试查询这个:
db.measure.find({"installation" : 200278 , "date.date" : "2014-12-28"},
{"date.date" : 1 , "_id" : 0})
.sort({"date.date" : 1})
首先我不明白为什么“date.date”不仅仅返回带有“2014-12-28”的元素。 此外,也许我排序错误,但不管我在 1 上的标志它仍然返回相同的顺序。
结果:
{ "date" : [ { "date" : "2014-12-28" }, { "date" : "2014-12-29" } ] }
澄清
我希望我的查询返回的只是元素:
{ "日期" : "2014-12-28" }
排序问题是我对 Mongo api 进行黑客攻击的扩展。并且想知道这个查询是如何工作的。
【问题讨论】:
-
对于您想要排序的内容似乎有点模糊。您只是想要对数组进行排序,还是想要根据最新的数组结果对文档进行排序?这一点可以说得更清楚。
-
我希望对数组日期中名为日期的元素进行排序。
-
我认为@Disposer 实际上发布了一个解决方案来做到这一点。但是根据我的 cmets,有一种方法可以在插入数组元素并永久对元素进行排序时执行此操作。这就是为什么你被问到你真正想要做什么。
-
平心而论,您的编辑仍然不是很清楚。您现在是否只想简单地返回那个“日期”元素。或者你想要它下面匹配的所有东西? @BatScream 现在编辑的响应仍然包含一些有效点。如果不完全清楚为什么。
-
因为我习惯了 SQL 查询。我对 mongo 需要解释一切的方式不熟悉。从安装 = 200278 和 date.date = 2014-12-18 的度量中选择 date.date 将返回日期而不是其他任何内容。