我的数据库发生了极其奇怪的事情。我有一个问题:
db.Tag.find({"word":"foo"})
这个东西匹配一个对象。这很好。
现在,有第二个查询
db.Tag.find({$or: [{"word":"foo"}]})
,第二个没有给出任何结果。
有一些我不明白的魔法:(第二次查询有什么问题?
理论上,$or
需要两个或更多参数,所以我可以伪造它:
db.Tag.find({$or: [{"word":"foo"},{"word":"foo"}]})
但仍然没有结果。
答案 0 :(得分:0)
你的第二个查询完全没问题,应该可行。虽然文档说,$or
对两个或更多表达式的数组执行逻辑运算,但它也适用于单个表达式。
以下是您可以查看并试用的样本: -
> db.col.insert({"foo": "Rohit"})
> db.col.insert({"foo": "Aman", "bar": "Rohit"})
>
> db.col.find({"foo": "Rohit"})
{ "_id" : ObjectId("50ed6bb1a401d9b4576417f7"), "foo" : "Rohit" }
> db.col.find({$or: [{"foo": "Rohit"}]})
{ "_id" : ObjectId("50ed6bb1a401d9b4576417f7"), "foo" : "Rohit" }
因此,正如您所看到的,当您用于我的收藏时,您的查询都可以正常工作。所以,其他地方肯定存在问题。您确定收藏品中有数据吗?
答案 1 :(得分:0)
Okaay,服务器管理员从debian repo安装了mongodb。 Debian repo有1.4.4版本的mongodb,aandd看起来像$or
根本就没有得到支持:P