2012-05-04 7 views
3

は公式MongoDBのAPIは、私が

db.papers.update({"authors cited" : {"$ne" : "Richie"}}, 
... {$push : {"authors cited" : "Richie"}}) 

のようなものに遭遇したときに、私は全く混乱するしかない非常に少ないhttp://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24ne $北東およそ

を書きました。誰かが私にそれを説明できますか?

答えて

2

これは、著者として「Richie」をまだ持っていない論文について引用された著者のリストに「Richie」を追加します。

代わりに$addToSetを使用することもできます。

しかし、{著者が引用した:{"$ ne": "Richie"}}は、 "author cited"に対応するリスト内の要素を意味し、 "author引用した?

これはちょっと混乱します。一般的に(私は例外があると確信していますが、それらは文書化する必要があります)、すべてのセレクタは複数値フィールドの個々の値を対象としています。モンゴでは"multikeys"と呼ばれています。

これは、当初、あなたのクエリはRichieではない少なくとも1人の著者を持つすべての論文を対象とすると考えました。それから私はチェックし、これは間違っていることが判明した。あなたの質問に+1してください。なぜなら、これは本当によく書かれる必要があるからです。

+0

ありがとうございます! {"$ me": "Richie"}}は、コレクション内の "author cited"キーを持つすべてのドキュメントを意味しますが、対応する配列には "Richie" "、正しい? – Max

+0

しかし、{著者が引用した:{"$ me": "Richie"}}は、 "author cited"に対応するリスト内の要素を意味し、 "author cited"に対応する値を意味します。 – Max

+0

""著者引用 "キーを持つが、対応する配列にはRichieが含まれていないコレクション内のすべての文書。 *いいえ*。私はあまりにも(最初の答えが間違っていたのは申し訳ありません)と思っていましたが、フィールドがなくなっているか、リッチーがまったく含まれていないことを意味しています。 – Thilo