問題タブ [mongodb-query]
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 - 予期しない結果をもたらすMongoクエリ
このクエリがこのレコードを返す理由を誰かに教えてもらえますか?
クエリ:
記録:
私はmongoに「キャンペーン」が財産であったレコードを返してくれるように頼んでいたと思いました。ただし、ご覧のとおり、このレコードには「キャンペーン」というプロパティはありません。
mongodb - MongoDB クエリ - タグ配列からそれぞれ 1 つを見つけます
MongoDB/Mongoose で "where $in" クエリを実行しようとしていますが、配列内のタグごとに 1 つの結果のみが返されます。のような並べ替え:
そして、3 つの固有の結果が返されます。指定したタグのセットからそれぞれ。
SQL では GROUP BY のようなものを使用しますが、MongoDB では Map/Reduce を行わないと同等のものを見つけることができません。
とにかくそれをするのですか?ありがとう。
--edit 私が望むものと同等の SQL は次のようになります。
または理想的には、MongoDB にはランダムな要素はありませんが、
mongodb - MongoDB $where 演算子はそのように奇妙に動作しますか?
私は MongoDB をテストしていますが、ちょっと驚いた例を次に示します。
そして、私のコレクションをリストするには:
そして - 完全に確実にするために:
そして奇妙な部分:
クエリには厳密に反対の設定があると思います。
mongodb - ボックスの地理空間クエリ内のマングースが正しく機能しない
簡単な質問:
nodejsでマングースを使用して地理空間クエリを作成する適切な方法は何ですか?
複雑な話:
空間インデックスを持つマングースでスキーマを作成しました
次に、表3のドキュメントに挿入しました。これらのドキュメントは、mongoクライアントとmongooseの両方でdb.mymodels.find({})
、MyModel.find({});
次に、バウンディングボックスを使用して地理空間クエリを作成しようとします。
mongoクライアントは正常に動作します
ボックス内で、期待どおりに1つの結果のみを返します。
一方、マングースは3つの結果すべてを返します
この質問では、whereの代わりにfind()を使用する必要があると述べていますが、findをwhereに置き換えようとすると、'need an area > 0'
チェックしたエラーが発生し、バウンディングボックスが左下、右上の順に正しくフォーマットされます。
何をすべきか?マングースを使用してバウンディングボックスで地理空間クエリを作成する適切な方法は何ですか?
mongodb - MongoDBの配列内の配列内の埋め込みオブジェクトを更新します
私は次のようなドキュメントを持っています
ニックネーム「test」でその中を$set
綴ることはできません。私はこのクエリを試しました:level : 3
spell_id : 1
spells
heros
私が見るエラーは
文字列フィールド名を使用して配列に追加できません[spells]助けてくれてありがとう。
mongodb - mongoDBで複数の結果をクエリする方法
複数のクエリパラメータのドキュメントを検索したい場合(正しい表現を使用していない場合は申し訳ありません)、これを行うにはどうすればよいですか?私はc#ドライバーを使用しています。
例プロバイダー1とプロバイダー2の両方のドキュメントを検索したい
collection.Find(Query.EQ("ProviderId", providerId))
TSQLの場合:
mongodb - MongoDB と C# ドライバーを使用してサブドキュメント コレクションをクエリする方法
私は次の構造を持っています:
保存すると、次のようなものが生成されます。
私がやりたいことは、既に作成されたスレッドがある場合、同じスレッドを使用し、ユーザーが同じユーザーに送信しているか、またはその逆であるかに基づいて、そのスレッドにメッセージを追加することです。
私はこのようなものがうまくいくと思っていましたが、null (値なし) を返しています:
私はすべてが含まれているように考えていますか?またはすべてを持っていますか?クエリの作成方法がよくわかりません。
javascript - マップリデュースによるMongoDBの一意の値の集計
MongoDBでの集計について、SOについて多くの質問がありますが、私の完全な解決策はまだ見つかりません。
これが私のデータの例です:
さて、私の目標は、各果物の各色の人気を判断することです。したがって、次のようなものが出力コレクションになります。
私はさまざまなM/R機能を試しましたが、最終的には機能しないか、指数関数的に時間がかかります。例(果物)のコンテキストでは、約1,000の異なる果物と100,000の色があり、合計で約10,000,000のドキュメントがあります。私の現在のM/Rは次のとおりです。
現在、これは機能し、100レコードの場合、1秒ほどかかりますが、時間は非線形に増加するため、1億レコードには非常に長い時間がかかります。問題は、reduce関数で配列を使用して貧弱なサブアグリゲーションを実行しているため、map関数の値とcollection
両方を反復処理する必要があることです。collection
ここで、これを効率的に行う方法を理解する必要があります(複数の削減が必要な場合でも)。どんな提案でも大歓迎です!
編集それを投稿するためのより良い場所がないため、ここに私の解決策があります。
まず、次のファイルを作成しました
mr.js
:
そのファイルは私のコレクション全体を反復処理しdate
、一度に100k個のドキュメント(インデックスが必要なソート順)を段階的にマップ/削減し、それらを単一の出力コレクションに削減します。これは次のように使用されます:mongo db_name mr.js
。
それから、数時間後、私はすべての情報を含むコレクションを手に入れました。どの果物が最も色が多いかを把握するために、mongoシェルからこれを使用して上位25を印刷します。
このアプローチの本当にすばらしい点は、インクリメンタルであるため、mapreduceの実行中に出力データを操作できることです。
mongodb - PHP を使用した Mongo での GroupBy
mongoDB でグループ クエリを実行しようとしていますが、間違った結果が得られ、微調整しても問題は解決しません。
次のスキーマを持つコレクションがあります (action_ はカウンターです)
各ユーザーがすべてのショップのすべてのカウンターを合計する必要があり、これを実行しました。
得られる結果は、値を抽出するドキュメントの配列です。連想配列の配列が必要で、すべてのユーザーが次のようなものを持っている必要があります。
mongodb - すべての埋め込みドキュメントを削除する
コレクションからすべての埋め込みドキュメントを削除したいのですが、その方法がわかりません。
私はいくつかの方法を試しましたが、これはうまくいくはずだと思います:
製品はコレクションであり、注文はドキュメントが埋め込まれた配列です。
orders
インデックスが0以上の場所をすべて削除します。
運がない。