【发布时间】:2013-11-23 17:07:18
【问题描述】:
我有一个包含大约 200K 文档的集合:
db.place.find()[0]
{
"_id" : ObjectId("5290de1111afb260363aa4a1"),
"name" : "place X",
"center" : [x, y]
}
现在我正在尝试查询中心Y大于X的地方,并遇到以下问题:
> db.place.find({'center.0':{'$gt':center.1}}).count()
Sat Nov 23 14:42:01.556 JavaScript execution failed: SyntaxError: Unexpected number
有什么提示吗? 提前致谢
【问题讨论】:
-
应该是:
db.place.find({'center.0':{'$gt':'center.1'}}).count()注意 center.1 周围的引号 -
我试过这个查询,但似乎不起作用。我使用的是 2.4.7 版本。我用 $where 运算符代替了答案。
-
你不能引用 where 右边的文档内容(即 {a:1} 可以,{a:b} 其中 b 是另一个字段是不行的。如果你需要比较 x 和 y,您可能会认为该架构不适合您的用例 - 您是否必须像这样存储 x 和 y?
-
可能有一种方法可以在不使用 $where 的情况下做到这一点。 “中心”总是一个包含两个元素的数组,还是它可能有更多或更少的元素? “x”和“y”的类型是什么——它们是数字吗?
-
大家好,感谢您的回复...事实上 {'$gt':'center.1'} 的解决方案返回 0,因为它比较浮点数和字符串..
标签: mongodb