คำถามติดแท็ก mongodb-query

แท็กนี้มีไว้สำหรับคำถามที่เกี่ยวข้องกับการสอบถามและการอัพเดตคอลเลคชัน MongoDB ไม่ว่าจะผ่าน mongo shell หรือการใช้โปรแกรมควบคุมภาษาโปรแกรม

30
วิธีสอบถาม MongoDB ด้วยคำว่า“ like”
ฉันต้องการสืบค้นด้วย SQL ของlikeแบบสอบถาม: SELECT * FROM users WHERE name LIKE '%m%' ฉันจะทำเช่นเดียวกันใน MongoDB ได้อย่างไร? ฉันไม่สามารถหาผู้ดำเนินการสำหรับlikeในเอกสาร

12
ค้นหาเอกสารที่มีขนาดอาร์เรย์มากกว่า 1
ฉันมีชุดรวบรวม MongoDB พร้อมเอกสารในรูปแบบต่อไปนี้: { "_id" : ObjectId("4e8ae86d08101908e1000001"), "name" : ["Name"], "zipcode" : ["2223"] } { "_id" : ObjectId("4e8ae86d08101908e1000002"), "name" : ["Another ", "Name"], "zipcode" : ["2224"] } ขณะนี้ฉันสามารถรับเอกสารที่ตรงกับขนาดอาร์เรย์ที่ระบุ: db.accommodations.find({ name : { $size : 2 }}) ส่งคืนเอกสารที่ถูกต้องพร้อม 2 องค์ประกอบในnameอาร์เรย์อย่างถูกต้อง อย่างไรก็ตามฉันไม่สามารถทำ$gtคำสั่งเพื่อส่งคืนเอกสารทั้งหมดที่nameเขตข้อมูลมีขนาดอาร์เรย์ที่มากกว่า 2: db.accommodations.find({ name : { $size: { $gt : 1 …

14
ค้นหาวัตถุระหว่างสองวัน 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, …

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", …

9
อัปเดตฟิลด์ MongoDB โดยใช้ค่าของฟิลด์อื่น
ใน MongoDB เป็นไปได้หรือไม่ที่จะอัปเดตค่าของฟิลด์โดยใช้ค่าจากฟิลด์อื่น? SQL ที่เทียบเท่าจะมีลักษณะดังนี้: UPDATE Person SET Name = FirstName + ' ' + LastName และหลอกโค้ด MongoDB จะเป็น: db.person.update( {}, { $set : { name : firstName + ' ' + lastName } );

26
บันทึกแบบสุ่มจาก MongoDB
ฉันกำลังมองหาที่จะได้รับการบันทึกโดยการสุ่มจากขนาดใหญ่ (100 mongodbล้านบันทึก) วิธีที่เร็วและมีประสิทธิภาพที่สุดในการทำคืออะไร? ข้อมูลมีอยู่แล้วและไม่มีฟิลด์ที่ฉันสามารถสร้างตัวเลขสุ่มและรับแถวสุ่ม ข้อเสนอแนะใด ๆ

21
รับชื่อของคีย์ทั้งหมดในคอลเลกชัน
ฉันต้องการรับชื่อของคีย์ทั้งหมดในคอลเลกชัน MongoDB ตัวอย่างเช่นจากสิ่งนี้: db.things.insert( { type : ['dog', 'cat'] } ); db.things.insert( { egg : ['cat'] } ); db.things.insert( { type : [] } ); db.things.insert( { hello : [] } ); ฉันต้องการรับกุญแจพิเศษ: type, egg, hello

14
วิธีลบเขตข้อมูลอย่างสมบูรณ์จากเอกสาร MongoDB?
{ name: 'book', tags: { words: ['abc','123'], lat: 33, long: 22 } } สมมติว่านี่เป็นเอกสาร ฉันจะลบ " words" ออกจากเอกสารทั้งหมดในคอลเล็กชันนี้ได้อย่างไร ฉันต้องการให้เอกสารทั้งหมดไม่มี " words": { name: 'book', tags: { lat: 33, long: 22 } }

11
MongoDB: รวมข้อมูลจากหลาย ๆ คอลเลคชันเป็นหนึ่งเดียว ..
ฉันจะ (ใน MongoDB) รวมข้อมูลจากหลาย ๆ คอลเลคชันเป็นหนึ่งคอลเล็กชันได้อย่างไร ฉันสามารถใช้แผนที่ลดขนาดและถ้าเป็นเช่นนั้นได้อย่างไร ฉันจะซาบซึ้งอย่างมากในขณะที่ฉันเป็นสามเณร

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 ที่มีองค์ประกอบมากมาย ฉันต้องการรีเซ็ต.handledคุณลักษณะของวัตถุทั้งหมดในอาร์เรย์โดยที่.profile= XX เอกสารอยู่ในรูปแบบต่อไปนี้: { "_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) ปัญหาของฉันคือมันช้ามาก (40 นาทีสำหรับน้อยกว่า 100,000 บันทึกและฉันมีนับล้านในการอัปเดต) ฉันค่อนข้างมั่นใจว่ามีบางอย่างในตัวสำหรับการทำเช่นนี้ แต่เอกสารสำหรับการอัปเดต () คือ mmmhhh .... สรุปสั้น ๆ …

6
รวมฟิลด์ที่มีอยู่ทั้งหมดและเพิ่มฟิลด์ใหม่ลงในเอกสาร
ฉันต้องการกำหนดขั้นตอนการรวมโครงการ $ ซึ่งฉันสามารถสั่งให้เพิ่มฟิลด์ใหม่และรวมฟิลด์ที่มีอยู่ทั้งหมดโดยไม่ต้องแสดงรายการฟิลด์ที่มีอยู่ทั้งหมด เอกสารของฉันมีลักษณะดังนี้มีหลายช่อง: { 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 …

6
mongodb นับจำนวนของค่าที่แตกต่างกันต่อฟิลด์ / คีย์
มีแบบสอบถามสำหรับการคำนวณจำนวนค่าที่แตกต่างกันในเขตข้อมูลใน DB ฉันมีเขตข้อมูลสำหรับประเทศและมีค่าประเทศ 8 ประเภท (สเปนอังกฤษฝรั่งเศส ฯลฯ ... ) หากมีคนเพิ่มเอกสารในประเทศใหม่ฉันต้องการให้แบบสอบถามส่งคืน 9 มีวิธีที่ง่ายกว่าแล้วจัดกลุ่มและนับหรือไม่?

5
MongoDB: วิธีค้นหาระเบียนที่ฟิลด์เป็นโมฆะหรือไม่ได้ตั้งค่า?
ฉันมีEmailเอกสารที่มีช่องsent_atวันที่: { 'sent_at': Date( 1336776254000 ) } หากEmailยังไม่ได้ส่งsent_atฟิลด์นี้จะเป็นโมฆะหรือไม่มีอยู่ ฉันต้องการรับจำนวนการส่ง / ไม่ได้ส่งEmailsทั้งหมด ฉันติดขัดที่พยายามหาวิธีที่ถูกต้องในการค้นหาข้อมูลนี้ ฉันคิดว่านี่เป็นวิธีที่ถูกต้องในการนับจำนวนการส่ง: db.emails.count({sent_at: {$ne: null}}) แต่ฉันจะนับคนที่ไม่ได้ส่งได้อย่างไร?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.