0

私のデータベースで非常に奇妙なことが起こっています。質問があります:

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

これは 1 つのオブジェクトに一致します。いいね。

さて、2番目のクエリがあります

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

2番目のものは結果を与えません。

私が明らかに理解していないある種の魔法があります:( 2番目のクエリで何が間違っていますか?

理論的には、 $or2 つ以上のパラメーターが必要なので、次のように偽装できます。

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

しかし、まだ、結果はありません。

4

2 に答える 2

0

2 番目のクエリはまったく問題なく、動作するはずです。ドキュメントには、$or2つ以上の式の配列に対して論理演算を実行すると書かれていますが、単一の式でも機能します。

これを機能させるために、見て試してみることができるサンプルを次に示します。

> 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 リポジトリから mongodb をインストールしました。Debian リポジトリには 1.4.4 バージョンの mongodb がありましたが、aandd は$orまだサポートされていないようです:P

于 2013-01-09T13:36:45.170 に答える