我的数据库上发生了非常奇怪的事情。我有一个查询:
db.Tag.find({"word":"foo"})
这东西匹配一个对象。这真好。
现在,有第二个查询
db.Tag.find({$or: [{"word":"foo"}]})
第二个没有给出任何结果。
我显然不明白某种魔法:(第二个查询有什么问题?
理论上,$or需要两个或更多参数,所以我可以用以下方法伪造它:
db.Tag.find({$or: [{"word":"foo"},{"word":"foo"}]})
但仍然没有结果。
我的数据库上发生了非常奇怪的事情。我有一个查询:
db.Tag.find({"word":"foo"})
这东西匹配一个对象。这真好。
现在,有第二个查询
db.Tag.find({$or: [{"word":"foo"}]})
第二个没有给出任何结果。
我显然不明白某种魔法:(第二个查询有什么问题?
理论上,$or需要两个或更多参数,所以我可以用以下方法伪造它:
db.Tag.find({$or: [{"word":"foo"},{"word":"foo"}]})
但仍然没有结果。
您的第二个查询非常好,它应该可以工作。尽管文档说,$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" }
因此,如您所见,您的查询在用于我的收藏时都可以正常工作。所以,其他地方肯定有问题。您确定您的收藏中有数据吗?
好的,服务器管理员从 debian repo 安装了 mongodb。Debian repo 有 1.4.4 版本的 mongodb,aandd 看起来$or根本不支持:P