0

我的数据库上发生了非常奇怪的事情。我有一个查询:

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

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

现在,有第二个查询

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

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

我显然不明白某种魔法:(第二个查询有什么问题?

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

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

但仍然没有结果。

4

2 回答 2

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" }

因此,如您所见,您的查询在用于我的收藏时都可以正常工作。所以,其他地方肯定有问题。您确定您的收藏中有数据吗?

于 2013-01-09T13:17:38.390 回答
0

好的,服务器管理员从 debian repo 安装了 mongodb。Debian repo 有 1.4.4 版本的 mongodb,aandd 看起来$or根本不支持:P

于 2013-01-09T13:36:45.170 回答