私はMongeoDBデータベースに接続するためにClojure's Mongerライブラリを使用しています。MongoDBサブ文書をMongerで更新/挿入するにはどうすればいいですか?
私の更新するMongoデータベースのサブ文書を削除する&を挿入します。 MongoDBの$ push修飾子を使うと、検索したドキュメントのルートでこれを行うことができます。しかし、私は$をサブコレクションにプッシュできるようにしたい。 Monger's testsを見ると、これは可能です。しかし、私は第3の親の子供のコレクションに私が押し入れることができるようにしたいと思います。モンガーはこのようなことをすることができますか?
(mgcol/update mycollection { :my-criteria-key "my-criteria-value" } { $push { "parent.3.child-collection" "fubar" }})
私の$プッシュで$ where句を使用することができます。このようなことは可能でしょうか?
(mgcol/update mycollection { :doc-criteria-key "doc-criteria-value" } { $push { { $where { parent.child.lastname: 'Smith' } } "fubar" } } )
でも基本レベルであっても、私のレプリケーションで次のコマンドを試してみると、私は以下のエラーを受け取ります。
"めちゃくちゃ" データベースは、私は間違いなくDB
{ :owner "[email protected]" }
基準に接続されています間違いなく存在する確かに有効です。そして
は私が
"content.1.content"
と"content.$.content"
の両方を試してみました:
repl => (mc/update "fubar" { :owner "[email protected]" } { $push { "content.1.content" { "fu" "bar" } } }) ClassCastException clojure.lang.Var$Unbound cannot be cast to com.mongodb.DB monger.collection/update (collection.clj:310) repl => repl => repl => (clojure.repl/pst *e) ClassCastException clojure.lang.Var$Unbound cannot be cast to com.mongodb.DB monger.collection/update (collection.clj:310) bkell.run.run-ring/eval2254 (NO_SOURCE_FILE:46) clojure.lang.Compiler.eval (Compiler.java:6406) clojure.lang.Compiler.eval (Compiler.java:6372) clojure.core/eval (core.clj:2745) clojure.main/repl/read-eval-print--6016 (main.clj:244) clojure.main/repl/fn--6021 (main.clj:265) clojure.main/repl (main.clj:265) user/eval27/acc--3869--auto----30/fn--32 (NO_SOURCE_FILE:1) java.lang.Thread.run (Thread.java:619)
は、誰もがこの遭遇していたし、それを解決しましたか?
おかげ
イマイチ '$のpush'
テストは、私はそれが権利はないと思う' "$プッシュ" ' – Ankur
する必要があります。 [mongerのテスト](https://github.com/michaelklishin/monger/blob/master/test/monger/test/updating_test.clj)を見ると、彼らは*** $ set ***演算子を使用します'monger.operators)。私はまだそれを試み、同じエラーを持っています。 また、ホストとポートの異なる組み合わせを試しました(27017)。サイコロはありません... hmmm:/ – Nutritioustim