タグ付けされた質問 「mongodb-query」

このタグは、mongoシェルを介して、またはプログラミング言語ドライバーを使用して、MongoDBコレクションのクエリと更新に関する質問に使用します。


12
配列サイズが1より大きいドキュメントのクエリ
次の形式のドキュメントを含むMongoDBコレクションがあります。 { "_id" : ObjectId("4e8ae86d08101908e1000001"), "name" : ["Name"], "zipcode" : ["2223"] } { "_id" : ObjectId("4e8ae86d08101908e1000002"), "name" : ["Another ", "Name"], "zipcode" : ["2224"] } 現在、特定の配列サイズに一致するドキュメントを取得できます。 db.accommodations.find({ name : { $size : 2 }}) これにより、name配列に2つの要素があるドキュメントが正しく返されます。ただし、フィールドの配列サイズが2より大きい$gtすべてのドキュメントを返すコマンドを実行することはできませんname。 db.accommodations.find({ name : { $size: { $gt : 1 } }}) name1より大きいサイズの配列を持つすべてのドキュメントを選択するにはどうすればよいですか(できれば現在のデータ構造を変更する必要がない)。

14
2つの日付MongoDBの間のオブジェクトを検索する
私はつぶやきをmongodb内に格納するために遊んでいます。各オブジェクトは次のようになります。 { "_id" : ObjectId("4c02c58de500fe1be1000005"), "contributors" : null, "text" : "Hello world", "user" : { "following" : null, "followers_count" : 5, "utc_offset" : null, "location" : "", "profile_text_color" : "000000", "friends_count" : 11, "profile_link_color" : "0000ff", "verified" : false, "protected" : false, "url" : null, "contributors_enabled" : false, "created_at" : …

14
MongoDBコレクションのオブジェクト配列内の照会された要素のみを取得します
私のコレクションに次のドキュメントがあるとします。 { "_id":ObjectId("562e7c594c12942f08fe4192"), "shapes":[ { "shape":"square", "color":"blue" }, { "shape":"circle", "color":"red" } ] }, { "_id":ObjectId("562e7c594c12942f08fe4193"), "shapes":[ { "shape":"square", "color":"black" }, { "shape":"circle", "color":"green" } ] } クエリを実行します。 db.test.find({"shapes.color": "red"}, {"shapes.color": 1}) または db.test.find({shapes: {"$elemMatch": {color: "red"}}}, {"shapes.color": 1}) 一致したドキュメント(ドキュメント1)を返しますが、常にすべての配列項目が含まれshapesます。 { "shapes": [ {"shape": "square", "color": "blue"}, {"shape": "circle", "color": …


26
MongoDBからのランダムなレコード
私は巨大な(1億レコード)からランダムなレコードを取得しようとしています mongodbます。 そうするための最速かつ最も効率的な方法は何ですか?データはすでにそこにあり、乱数を生成してランダムな行を取得できるフィールドはありません。 助言がありますか?


14
MongoDBドキュメントからフィールドを完全に削除する方法は?
{ name: 'book', tags: { words: ['abc','123'], lat: 33, long: 22 } } これがドキュメントであるとします。wordsこのコレクションのすべてのドキュメントから「」を完全に削除するにはどうすればよいですか?すべてのドキュメントに " words"を付けないようにします。 { name: 'book', tags: { lat: 33, long: 22 } }


3
ネストされたオブジェクトをクエリする方法は?
ネストされたオブジェクト表記でmongoDBをクエリするときに問題があります。 db.messages.find( { headers : { From: "reservations@marriott.com" } } ).count() 0 db.messages.find( { 'headers.From': "reservations@marriott.com" } ).count() 5 何が悪いのか分かりません。ネストされたオブジェクト表記がドット表記クエリと同じ結果を返すことを期待しています。どこが間違っているのですか?

15
mongodbで複数の配列要素を更新する方法
要素の配列を保持するMongoドキュメントがあります。 = XXの.handled配列内のすべてのオブジェクトの属性をリセットしたいと思います.profile。 ドキュメントは次の形式です。 { "_id": ObjectId("4d2d8deff4e6c1d71fc29a07"), "user_id": "714638ba-2e08-2168-2b99-00002f3d43c0", "events": [{ "handled": 1, "profile": 10, "data": "....." } { "handled": 1, "profile": 10, "data": "....." } { "handled": 1, "profile": 20, "data": "....." } ... ] } だから、私は以下を試しました: .update({"events.profile":10},{$set:{"events.$.handled":0}},false,true) ただし、各ドキュメントで最初に一致した配列要素のみを更新します。(これは$-位置演算子の定義された動作です。) 一致した配列要素をすべて更新するにはどうすればよいですか?

8
mongodb:存在しない場合は挿入
毎日、ドキュメントのストックを受け取ります(更新)。私がやりたいことは、まだ存在していない各アイテムを挿入することです。 また、それらを最初に挿入したときと、更新で最後に見たときも追跡したいと思います。 重複したドキュメントが欲しいのですが。 以前に保存したドキュメントを削除したくありませんが、更新には含まれていません。 レコードの95%(推定)は、毎日変更されていません。 Pythonドライバー(pymongo)を使用しています。 私が現在行っているのは(疑似コード)です。 for each document in update: existing_document = collection.find_one(document) if not existing_document: document['insertion_date'] = now else: document = existing_document document['last_update_date'] = now my_collection.save(document) 私の問題は、それが非常に遅いということです(10万レコード未満の場合は40分、更新には何百万ものレコードがあります)。これを行うために何かが組み込まれていると確信していますが、update()のドキュメントはmmmhhh ....少し簡潔です...(http://www.mongodb.org/display/DOCS/Updating) 誰かがそれをより速く行う方法をアドバイスできますか?

6
すべての既存のフィールドを含め、新しいフィールドをドキュメントに追加します
$ project集計ステージを定義して、新しいフィールドを追加して既存のすべてのフィールドを含めるように指示できます。既存のフィールドをすべてリストする必要はありません。 私のドキュメントは次のようになり、多くのフィールドがあります: { obj: { obj_field1: "hi", obj_field2: "hi2" }, field1: "a", field2: "b", ... field26: "z" } 私はこのような集計操作を行いたいです: [ { $project: { custom_field: "$obj.obj_field1", //the next part is that I don't want to do field1: 1, field2: 1, ... field26: 1 } }, ... //group, match, and whatever... …

5
MongoDB:フィールドがnullまたは設定されていないレコードをクエリする方法は?
日付フィールドがあるEmailドキュメントがありsent_atます。 { 'sent_at': Date( 1336776254000 ) } これEmailが送信されていない場合、sent_atフィールドはnullまたは存在しません。 送信/未送信のすべての数を取得する必要がありEmailsます。この情報を照会する正しい方法を見つけ出そうとするのに行き詰まっています。これは送信数を取得する正しい方法だと思います: db.emails.count({sent_at: {$ne: null}}) しかし、送信されないものの数をどのように取得する必要がありますか?

5
mongodbは、フィールド/キーごとに異なる値の数を数えます
DBでフィールドに含まれる個別の値の数を計算するクエリはありますか? fe国のフィールドがあり、国の値には8種類あります(スペイン、イギリス、フランスなど)。 誰かが新しい国のドキュメントをさらに追加した場合、クエリは9を返します。 グループ化してカウントするより簡単な方法はありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.