4

昨日 MongoDB のドキュメントをチェックしていたところ、多くのオペレーターが 2 つのエントリ (1 つは射影下、もう 1 つはクエリの下) を持っていることに気付きました。

2つの違いは何ですか?彼らはほとんど同じことをカバーしているようです。

4

1 に答える 1

5

クエリは実際にはレコードのクエリですが、プロジェクションはドキュメント フィールドのプロジェクションです。

これを別の言い方をすると、プロジェクションはSELECTSQL にあり、クエリはWHEREです。

例を見てみましょう ( http://docs.mongodb.org/manual/reference/operator/elemMatch/ ):

db.users.find(
    { sessions: {$elemMatch:{session_id: 23}} }, 
    { sessions:{$elemMatch:{session_id: 23}} }
)

このクエリは $elemMatch を使用しsessionsてドキュメントのフィールド内の要素を照合userし、見つかったの射影にはまったく同じ演算子を使用しますsession

もちろん、実際にはこのクエリをこのように書くことはありません。なぜならsessions.$、射影の部分だけを行うことができるからです。しかし、より完全な方法で示すために、このように書きました。

于 2013-07-03T14:01:01.010 に答える