問題タブ [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.

0 投票する
1 に答える
84 参照

mongodb - 予期しない結果をもたらすMongoクエリ

このクエリがこのレコードを返す理由を誰かに教えてもらえますか?

クエリ:

記録:

私はmongoに「キャンペーン」が財産であったレコードを返してくれるように頼んでいたと思いました。ただし、ご覧のとおり、このレコードには「キャンペーン」というプロパティはありません。

0 投票する
2 に答える
2699 参照

mongodb - MongoDB クエリ - タグ配列からそれぞれ 1 つを見つけます

MongoDB/Mongoose で "where $in" クエリを実行しようとしていますが、配列内のタグごとに 1 つの結果のみが返されます。のような並べ替え:

そして、3 つの固有の結果が返されます。指定したタグのセットからそれぞれ。

SQL では GROUP BY のようなものを使用しますが、MongoDB では Map/Reduce を行わないと同等のものを見つけることができません。

とにかくそれをするのですか?ありがとう。

--edit 私が望むものと同等の SQL は次のようになります。

または理想的には、MongoDB にはランダムな要素はありませんが、

0 投票する
2 に答える
986 参照

mongodb - MongoDB $where 演算子はそのように奇妙に動作しますか?

私は MongoDB をテストしていますが、ちょっと驚いた例を次に示します。

そして、私のコレクションをリストするには:

そして - 完全に確実にするために:

そして奇妙な部分:

クエリには厳密に反対の設定があると思います。

0 投票する
1 に答える
1370 参照

mongodb - ボックスの地理空間クエリ内のマングースが正しく機能しない

簡単な質問:
nodejsでマングースを使用して地理空間クエリを作成する適切な方法は何ですか?

複雑な話:
空間インデックスを持つマングースでスキーマを作成しました

次に、表3のドキュメントに挿入しました。これらのドキュメントは、mongoクライアントとmongooseの両方でdb.mymodels.find({})MyModel.find({});

次に、バウンディングボックスを使用して地理空間クエリを作成しようとします。
mongoクライアントは正常に動作します

ボックス内で、期待どおりに1つの結果のみを返します。
一方、マングースは3つの結果すべてを返します

この質問では、whereの代わりにfind()を使用する必要があると述べていますが、findをwhereに置き換えようとすると、'need an area > 0' チェックしたエラーが発生し、バウンディングボックスが左下、右上の順に正しくフォーマットされます。

何をすべきか?マングースを使用してバウンディングボックスで地理空間クエリを作成する適切な方法は何ですか?

0 投票する
2 に答える
10243 参照

mongodb - MongoDBの配列内の配列内の埋め込みオブジェクトを更新します

私は次のようなドキュメントを持っています

ニックネーム「test」でその中を$set綴ることはできません。私はこのクエリを試しました:level : 3spell_id : 1spellsheros

私が見るエラーは

文字列フィールド名を使用して配列に追加できません[spells]助けてくれてありがとう。

0 投票する
1 に答える
1149 参照

mongodb - mongoDBで複数の結果をクエリする方法

複数のクエリパラメータのドキュメントを検索したい場合(正しい表現を使用していない場合は申し訳ありません)、これを行うにはどうすればよいですか?私はc#ドライバーを使用しています。

例プロバイダー1とプロバイダー2の両方のドキュメントを検索したい collection.Find(Query.EQ("ProviderId", providerId))

TSQLの場合:

0 投票する
1 に答える
8428 参照

mongodb - MongoDB と C# ドライバーを使用してサブドキュメント コレクションをクエリする方法

私は次の構造を持っています:

保存すると、次のようなものが生成されます。

私がやりたいことは、既に作成されたスレッドがある場合、同じスレッドを使用し、ユーザーが同じユーザーに送信しているか、またはその逆であるかに基づいて、そのスレッドにメッセージを追加することです。

私はこのようなものがうまくいくと思っていましたが、null (値なし) を返しています:

私はすべてが含まれているように考えていますか?またはすべてを持っていますか?クエリの作成方法がよくわかりません。

0 投票する
2 に答える
8028 参照

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の実行中に出力データを操作できることです。

0 投票する
1 に答える
137 参照

mongodb - PHP を使用した Mongo での GroupBy

mongoDB でグループ クエリを実行しようとしていますが、間違った結果が得られ、微調整しても問題は解決しません。

次のスキーマを持つコレクションがあります (action_ はカウンターです)

各ユーザーがすべてのショップのすべてのカウンターを合計する必要があり、これを実行しました。

得られる結果は、値を抽出するドキュメントの配列です。連想配列の配列が必要で、すべてのユーザーが次のようなものを持っている必要があります。

0 投票する
1 に答える
1083 参照

mongodb - すべての埋め込みドキュメントを削除する

コレクションからすべての埋め込みドキュメントを削除したいのですが、その方法がわかりません。

私はいくつかの方法を試しましたが、これはうまくいくはずだと思います:

製品はコレクションであり、注文はドキュメントが埋め込まれた配列です。

ordersインデックスが0以上の場所をすべて削除します。

運がない。