問題タブ [monger]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - MongoDBdbStatsコレクションの数が正しくありません
dbStatsコマンドを実行すると、誤った数のコレクションが返されることに気付きました。
すべてのデータベースについて、dbStatsは追加のコレクションを返します。したがって、2つのコレクションを持つデータベースの場合、dbStatsは3を返します。
コレクションカウントエラーは、mongoシェルとMonger(最新バージョンのMongoDB Javaドライバーのclojureラッパー)の使用の両方と一致しています。
これは意図的な動作ですか、それともMongoDBのバグですか?
mongodb - Monger で MongoDB サブドキュメントを更新/挿入する方法は?
Clojure の Mongerライブラリを使用して MongeoDB データベースに接続しています。
Mongo データベースでサブドキュメントを更新、挿入、および削除したいと考えています。MongoDB の $push 修飾子を使用すると、検索したドキュメントのルートでこれを行うことができます。しかし、サブコレクションに $push できるようにしたいです。Monger のテストを見ると、それは可能に見えます。しかし、3 番目の親の子コレクションに確実にプッシュできるようにしたいと考えています。モンガーはこのようなことをすることができますか?
さらに良いのは、$push に $where 句を含める機能です。このようなことは可能ですか?
しかし、基本的なレベルでも、repl で次のコマンドを実行すると、以下のエラーが発生します。
「fubar」データベースは確かに存在します
私は間違いなくDBに接続しています
{ :owner "fubar@gmail.com" }
基準は間違いなく有効です。と"content.1.content"
私は両方を試しました"content.$.content"
:
誰かがこれに遭遇して解決しましたか?
ありがとう
mongodb - Mongodb ObjectId を文字列との間で自動的にマッピングする
Monger ライブラリを使用して Clojure から Mongo データベースにアクセスしています。私を悩ませているのは、ObjectId インスタンスと文字列の間を行き来することです。
たとえば、このコードは、エントリ(mc/find-maps "posts" {})
の値がクラスのインスタンスに設定されたマップに評価されますが、私のアプリでは、一意であることがわかっている文字列として単純に持つ方が便利です。_id
ObjectId
一方、次のような式の場合:パラメータに(mc/find-map-by-id "posts" (new ObjectId id))
String オブジェクトをid
使用する場合、それを使用して のインスタンスを作成する必要がありますObjectId
。
_id
アプリケーションの Strings と mongo 側の ObjectId の間で convert の値を自動的かつ透過的に作成する方法はありますか? 有効にすると、id の文字列表現を使用してマップを作成し、その逆も同様に、クエリでパラメーターとして使用するときに id t オブジェクト id の文字列表現を変換するある種のオプションはありますか?
そうでない場合、他にどのような戦略が利用可能ですか?
mongodb - monger を使用したスレーブ インスタンスへの読み取り専用接続
レプリカ セットがあり、スレーブ インスタンスへのスタンドアロンの読み取り専用接続を確立したいと考えています。
通常、問題なく実行できます。私がすべき唯一のことはslaveOk=true
、読み取り操作でクエリできるように設定することです。またはmongoコンソールを使用している場合nodejs
はうまく機能しますが、を使用してそれを行う方法が見つかりませんでしたmonger
。
set-db!
最も奇妙なことは、関数を呼び出しているときに例外が発生することです。
MongoException がマスターと通信せず、再試行が com.mongodb.DBTCPConnector.innerCall (DBTCPConnector.java:314) を使い果たしました
レプリカ セット接続を確立することは、私にとって選択肢ではありません。
現在、私は使用して[com.novemberain/monger "1.4.0"]
います。
ありがとう!
更新: Java MongoDB Driver API Documentationを調べて、メソッドを見つけましslaveOk
た。うまくいくことを期待して、次のコードを書きました。
しかし、私が持っているのは新しい例外だけです:
MongoException マスターではない com.mongodb.CommandResult.getException (CommandResult.java:100)
mongodb - monger と Clojure を使用して mongodb にドキュメントを追加するにはどうすればよいですか?
これまで MongoDb を使用したことがなく、Monger を使用したこともありません。私はClojureアプリに取り組んでいます。アップサートとして 1 つのドキュメントを追加できるようにしたいだけです。これは私のコードの一部です:
私はモンガーを使用しています:
私が持っている println および timbre/spy ステートメントは、このデータを端末出力に出力しています。
persist-data-to-database: { "serverUsed" : "/127.0.0.1:27017" , "updatedExisting" : false , "upserted" : { "$oid" : "510680444077296acfa67d6b"} , "n" : 1 , "connectionId": 4、"err": null、"ok": 1.0}
コマンド ラインで MongoDb にログインすると、コレクションが空のままのようです。
db.timeout_discovery.find() { "_id" : ObjectId("51017c5fa86c7bcc3d423c4d"), "タイムアウト" : "検出" }
ドキュメントが 1 つありますが、「タイムアウト」と「検出」以外には何もありません。
私は何をすべきかを理解しようとここを見ましたが、私が試したすべてのバリエーションは失敗しました:
http://clojuremongodb.info/articles/updating.html
この行:
このドキュメントを返します (ただし、元のドキュメントは長く、ここに表示されている HTML で肥大化しているため、ここでは短くします):
get-data-to-be-persisted で永続化するドキュメントは次のとおりです。
http://www.super.com/mexico/bars/2012-food-drink-award-nominees-best\" class=\"fn given-name url\">2012 Food & Drink アワード ノミネート: ベスト ニュー ビア バー
\n \t\t \t\t \n \n 投票は現在締め切られています\n結果はこちらでご覧くださいレストランとバーで詳細をご覧ください \n \t\n \t\n http://www.super.com/mexico/bars/2012-food-drink-award-nominees-best-new-beer-bar\">http://media. super.com/images/100131935/150/113/image.jpg\" /> \n \n \n \t\n \t\thttp://www.super.com/mexico/sex-dating/summer-dates-in-mexico-bars-and-restaurants\" class=\"fn given-name url\">夏のデート : Food-and-メキシコのバーやレストランでのデート
\n \t\t \t\tセックス&デート
\n \n \n これらの夏のデートでは、メキシコのホット スポットでディナーやドリンクをお楽しみください。食べ物に夢中になっているパートナーを口説くつもりなら、今シーズンは標準的なディナーと映画を超えてください. ニューヨークでの5つの食べ物と飲み物に焦点を当てた夏のデートをチェックしてください... \n \t\n \t\n http://www.super.com/mexico/sex-dating/summer-dates\">http://media.super.com/images/100453911/150/113/ image.jpg\" /> \n \n \n \t\n \t\thttp://www.super.com/mexico/restaurants/organic\" class=\"fn given-name url\">オーガニック
\n \t\t \t\tフード&ドリンク、アメリカ料理、アジア料理
\n \n \n \n $\n \n \n \n \n \n https://foursquare.com/intent/venue.html\" data-context=\"vcard-Content-Venue-50137\">foursquare に保存\n \n \n \n トライベッカの熱狂的ファンは、このオーガニック ヘルス フード バーの 2 番目の場所で、健康への渇望をすべて満たすことができます。木製パネルと白と緑のカウンターを備えた明るいテイクアウト ショップでは、絞りたての新鮮な食材も提供しています。ジュースやスムージー、... 編集 \n \t \n \t\n \t\n http://www.super.com/mexico/restaurants/organic\">http://media.super.com/images/100461855/150/113 /image.jpg\" /> \n \n \n \n \t \n 275 Greenwich St, (Murray Sts と Warren Sts の間), New York, 10007\n \t \n \t \t \n \t \t平均コース: 9 ドル。アメックス、ディスク、MC、... \t \n \n http://www.super.com/mexico/restaurants/organic\">では、なぜこれは保存されないのでしょうか?
端末出力にエラーは表示されませんが、エラーがある場合は、それをキャプチャして表示する方法について提案してください。
エラーがなければ、単に MongoDb または monger の構文が間違っているのでしょうか?
mongodb - 特定のタイムゾーンに従って日ごとにレコードをグループ化する効率的な方法はありますか?
アプリケーションの分析を追跡するために MongoDB データベースを使用しています。データベースからデータを取得するために、(clj-time と Monger を使用して) Clojure アプリケーションを作成しています。
次のようなレコードを含むコレクションがあります
それぞれdevice
が私のサービスの異なるユーザーを表します。私がやりたいことは、私が毎日何人の (一意の) ユーザーを持っているかを調べることですが、「日」は特に米国/中央時間帯を指し、夏時間を考慮したいという注意事項があります. $group
(それが要件でなければ、 a のようなことをしてからa を実行できると思いますdistinct
。)
これが私がやってきたことです:
Clojure を読むことができない場合、これは基本的に次のようになります:中部時間帯の最新のn 個の真夜中のリストを取得し、次に Mongo クエリを実行して、連続する真夜中の各ペアの間のすべてのレコードを検索します。device
次に、各日内の個別の の数を数えます。
このアプローチについて私が気に入らない点は次のとおりです。
- 日ごとに個別のクエリを実行する (私は通常、一度に 30 日を調べます) のは間違っていると感じます。これは、アプリケーション側ではなくデータベース側で行う必要があります。
- 個別
device
の のカウントも、データベースで行う必要があります。 - 私のサーバーは UTC タイム ゾーンに設定されているため、UTC では午前 0 時以降、中部時間では午前 0 時より前の場合、このリストの最後のエントリは常にゼロになります。これはパッチを適用するのに十分簡単ですが、そもそもそれを防ぐのに十分なほどスマートなソリューションを望んでいます.
- この関数全体の実行には約 500 ミリ秒かかります。それはひどいことではありません — クエリを実行するのは私だけで、1 日に 1 つか 2 回しかありません — しかし、操作にそれほど時間がかからないように思えます。
このロジックをさらに MongoDB クエリに押し込む方法はありますか?
clojure - Monger をシリアライズさせない
Clojure は初めてで、Monger に問題があります。
Monger を Friend で使用しようとしています。私はこのnsを持っています:
Mongerを使用してこれをデータベースに追加しようとすると
Mongerは Is there any way to put that value as is or is there any way to change to ?#{:cemerick.friend-demo.users/user}
としてシリアル化します。"user"
"user"
#{:cemerick.friend-demo.users/user}
clojure - java.lang.RuntimeException: java.lang.NoSuchMethodError: clojure Web アプリの実行時
私が書いた小さな Clojure Web アプリを実行しようとしていますが、lein リング サーバーから例外が発生し、有用な情報が得られません。私はエラーをグーグルで検索し、問題を解決するために実行することを提案したこのディスカッションを見つけましたが、それは減価償却されています.lein deps :tree
完全なスタック トレース:
project.clj:
core.clj:
この例外について私ができることについての情報はありますか? あなたの時間と配慮していただきありがとうございます。
heroku - Heroku の Compojure アプリのどこにモンガー接続を配置しますか?
lein new compojure mongotest
lein 2.0 と Procfileを使用して compojure アプリを作成しましたweb: lein ring server-headless $PORT
。これはうまくいきましたが、今追加すると
git push heroku master
私がHerokuを試すと、最終的に私に与えます
これらの行を の最上位に追加しましたhandler.clj
。接続が で作成されていることがわかる古いドキュメントの一部ですが、生成されたアプリには (私が見つけた) もうmain
存在しないため、古いバージョンの compojure 用である必要があります。main
現在のバージョンではどこで接続を確立する必要がありますか? (または、私のプロファイルが正しくありませんか?)
(はい、MONGOLAB_URI
で定義されていheroku config
ます)
mongodb - Monger で Mongo `forEach` を実行する (または独自の JS を実行する) にはどうすればよいですか?
Monger を使用して Mongo に接続しています。走りたい
Monger のドキュメントに関連する「for each」エントリや、JavaScript を渡して別のコレクションに挿入する方法が見つかりません。どうすればいいですか?
編集この質問は誤解に基づいていました(forEach
サーバーAPIではなくクライアントAPIにあります)。私はそれを削除しますが、できません。