問題タブ [pymongo-3.x]
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.
python - mongoDBでポイントがポリゴン内にあるかどうか
{a:1,latitude:1.0,longitude:2.0,b:2} などの形式の緯度と経度を含む mongodb データベースがあります。緯度と
経度のペアが座標に存在するかどうかを確認したいと思います。
でドキュメントを照会しました
としても:
これらは機能していないようです。私が欲しいのは、ポリゴンに [doc["Longitude"],doc["Latitude"]] が存在するかどうかの true/false 値です。
mongodb - pymongo find().hint('index') はインデックスを使用しません
Pymongo 3.3.0およびMongodb 3,2でPython 3.5の特定のインデックスを使用して、インデックスを使用してコレクション内のドキュメントにアクセスしようとしています。sequence
ドキュメントの読み込み順序を定義する番号を含む、各ドキュメントで呼び出されるフィールドを作成しました。このフィールドにインデックスを作成'sequence'
し、次のコマンドを使用してインデックスに名前を付けました。
ドキュメントのロードに使用されるコードは次のとおりです。
doc で返されたドキュメントにはシーケンス番号 1 が含まれておらず、Mongodb に読み込まれた最初のドキュメントではありません。'sequence'
各ドキュメントのフィールドの値に基づいてドキュメントが昇順で返されるようにするにはどうすればよいですか?
編集:
Sort
コレクションが大きすぎて使用できません。サイズは約 16GB です。ドキュメントには、インデックスを使用すると、インデックス内のキーの順序でデータが返されると記載されているようです。そうでない場合、インデックスを使用してコレクション内のドキュメントの検索順序を定義することはできませんか?
python - pymongo接続のパスワードで@をエスケープするには?
私の質問は、pymongo を介して mongodb 認証のユーザー名パスワードを検証する方法の仕様です。.
MongoDB Docsで説明されているように、PyMongo 3.2.2 とユーザーとパスワードを含む URL を使用して MongoDB インスタンスに接続しようとしています。違いは、私が使用しているパスワードに「@」が含まれていることです。
最初は、次のように、エスケープせずに接続しようとしました。
プレフィックス = 'mongodb://'
ユーザー = 'ユーザー:passw_with_@_'
サフィックス = '@127.0.0.1:27001/'
conn = pymongo.MongoClient(プレフィックス + ユーザー + サフィックス)
当然、次のエラーが発生しました。
そこで、次のようにurllib.quote()を使用して user:pass 部分をエスケープしようとしました。
プレフィックス = 'mongodb://'
ユーザー = urllib.quote('user:passw_with_@_')
サフィックス = '@127.0.0.1:27001/'
conn = pymongo.MongoClient(プレフィックス + ユーザー + サフィックス)
しかし、私は得ました:
(重要なのは、GUI MongoDB 管理ツール (それが重要な場合はRobomongo ) を使用して、(実際の) アドレスと資格情報を使用して MongoDB に接続できることです。)
上記のコードでユーザー変数を印刷すると'user:passw_with_%40_'
文字列が生成され(つまり、「@」が「%40」になりました)、ウィキペディアによると、これは予想されるエスケープです。
@ を単一および二重のバックスラッシュ (user = 'user:passw_with_\\@_'
およびuser = 'user:passw_with_\@_'
) でエスケープしようとしましたが、それらは InvalidURI 例外で失敗しました。
TL;DR;
私の質問は、MongoDB URL のパスワード部分で「@」をエスケープするにはどうすればよいですか?
python - pymongo コマンド updateUser の使い方
pymongo コマンド updateUser を使用するにはどうすればよいですか?
次のコマンドを試しましたが、成功しませんでした:
と
戻り値
ありがとう。
python - ジェネレーターを使用して Mongo の大規模なコレクションを反復処理する
単一ノードのmongoに保存されている50万以上のドキュメントのコレクションがあります。時々、私の pymongo cursor.find() がタイムアウトして失敗します。
タイムアウトを無視するように設定することもできますがfind
、私はそのアプローチが好きではありません。代わりに、ジェネレーターを試しました(この回答とこのリンクから適応):
次に、次を使用してこのメソッドを呼び出します。
問題: イテレータが同じ数の結果を返さない。問題は、 next() がカーソルを進めることです。したがって、呼び出しごとに1つの要素が失われます...
質問: next が存在するかどうかを確認できるように、このコードを適合させる方法はありますか? Pymongo 3x は hasNext() を提供せず、'alive' チェックがfalse を返す保証はありません。
mongodb - MongoDB は更新式で論理演算子をサポートしていますか?
たとえば、私のコードは以下のとおりです
例外が発生しますOperationFailure: Unknown modifier: $and
。$and
MongoDB は、更新式のような論理演算子をサポートしていないようです。そうですか?
更新(@chridamに回答):
上記のコードは、状況を示すための単なる例です。指定された を持つユーザー ドキュメントを検索し、uid
それを に設定し、 が履歴値などの値と等しくない場合にのみuser_id
を設定します。device_id
device_id
mongodb - 集計パイプラインを使用してサブドキュメント内のキーの数を数える方法は?
次のようなドキュメントがあるとします。
コレクション内の回答レコードの数をカウントしたい。どうやら、このドキュメントは "1" と "3" の 2 つの回答レコードを提供しています。だから、私の質問は、集約パイプラインを使用してこれを達成する方法です。