Mongodb - 使用'$或'查询没有结果

时间:2013-01-09 13:03:54

标签: mongodb mongodb-query

我的数据库发生了极其奇怪的事情。我有一个问题:

db.Tag.find({"word":"foo"})

这个东西匹配一个对象。这很好。

现在,有第二个查询

db.Tag.find({$or: [{"word":"foo"}]})

,第二个没有给出任何结果。

有一些我不明白的魔法:(第二次查询有什么问题?

理论上,$or需要两个或更多参数,所以我可以伪造它:

db.Tag.find({$or: [{"word":"foo"},{"word":"foo"}]})

但仍然没有结果。

2 个答案:

答案 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