คำถามติดแท็ก aggregation-framework

MongoDB Aggregation Framework ให้วิธีการปรับรูปร่างและรวมข้อมูลใน MongoDB 2.2+

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 } );

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

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

7
MongoDB เลือกกลุ่มนับโดย
ฉันกำลังเล่นกับ MongoDB พยายามคิดวิธีทำง่ายๆ SELECT province, COUNT(*) FROM contest GROUP BY province แต่ดูเหมือนว่าฉันจะไม่สามารถเข้าใจได้โดยใช้ฟังก์ชันการรวม ฉันสามารถทำได้โดยใช้ไวยากรณ์กลุ่มที่แปลกจริง ๆ db.user.group({ "key": { "province": true }, "initial": { "count": 0 }, "reduce": function(obj, prev) { if (true != null) if (true instanceof Array) prev.count += true.length; else prev.count++; } }); แต่จะมีวิธีที่ง่ายกว่า / เร็วกว่าในการใช้ฟังก์ชั่นรวมหรือไม่

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 …

3
Mongodb อธิบายสำหรับกรอบการรวม
มีฟังก์ชันอธิบายสำหรับ Aggregation framework ใน MongoDB หรือไม่? ฉันไม่เห็นมันในเอกสาร หากไม่มีวิธีอื่นในการตรวจสอบแบบสอบถามทำงานอย่างไรภายในกรอบการรวม? ฉันรู้ว่าคุณเพิ่งทำ db.collection.find().explain() แต่ด้วยกรอบการรวมฉันได้รับข้อผิดพลาด db.collection.aggregate( { $project : { "Tags._id" : 1 }}, { $unwind : "$Tags" }, { $match: {$or: [{"Tags._id":"tag1"},{"Tags._id":"tag2"}]}}, { $group: { _id : { id: "$_id"}, "count": { $sum:1 } } }, { $sort: {"count":-1}} ).explain()

4
ค้นหาระเบียนที่ซ้ำกันใน MongoDB
ฉันจะค้นหาฟิลด์ที่ซ้ำกันในคอลเลกชัน Mongo ได้อย่างไร ฉันต้องการตรวจสอบว่าช่อง "ชื่อ" ซ้ำกันหรือไม่ { "name" : "ksqn291", "__v" : 0, "_id" : ObjectId("540f346c3e7fc1054ffa7086"), "channel" : "Sales" } ขอบคุณมาก!

3
ค่ากลุ่ม mongodb ตามหลายฟิลด์
ตัวอย่างเช่นฉันมีเอกสารเหล่านี้: { "addr": "address1", "book": "book1" }, { "addr": "address2", "book": "book1" }, { "addr": "address1", "book": "book5" }, { "addr": "address3", "book": "book9" }, { "addr": "address2", "book": "book5" }, { "addr": "address2", "book": "book1" }, { "addr": "address1", "book": "book1" }, { "addr": "address15", "book": "book1" }, { …

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

6
$ ค้นหาบน ObjectId ในอาร์เรย์
อะไรคือไวยากรณ์สำหรับการค้นหา $ บนฟิลด์ที่เป็นอาร์เรย์ของ ObjectIds แทนที่จะเป็น ObjectId เดียว ตัวอย่างเอกสารคำสั่งซื้อ: { _id: ObjectId("..."), products: [ ObjectId("..<Car ObjectId>.."), ObjectId("..<Bike ObjectId>..") ] } แบบสอบถามไม่ทำงาน: db.orders.aggregate([ { $lookup: { from: "products", localField: "products", foreignField: "_id", as: "productObjects" } } ]) ผลลัพธ์ที่ต้องการ { _id: ObjectId("..."), products: [ ObjectId("..<Car ObjectId>.."), ObjectId("..<Bike ObjectId>..") ], productObjects: [ {<Car Object>}, …


6
ตัวดำเนินการ $ คลี่คลายใน MongoDB คืออะไร?
นี่เป็นวันแรกของฉันกับ MongoDB ดังนั้นโปรดไปง่าย ๆ กับฉัน :) ฉันไม่เข้าใจ$unwindโอเปอเรเตอร์อาจเป็นเพราะภาษาอังกฤษไม่ใช่ภาษาแม่ของฉัน db.article.aggregate( { $project : { author : 1 , title : 1 , tags : 1 }}, { $unwind : "$tags" } ); ผู้ดำเนินโครงการเป็นสิ่งที่ฉันเข้าใจฉันคิดว่า (มันก็เหมือนSELECTไม่ใช่เหรอ) แต่แล้ว$unwind(อ้าง) ผลตอบแทนเอกสารหนึ่งสำหรับสมาชิกของอาร์เรย์คลายภายในเอกสารแหล่งที่มาทุกคน เป็นเช่นนี้JOINหรือไม่? ถ้าใช่วิธีที่ผลมาจาก$project(มี_id, author, titleและtagsสาขา) สามารถเทียบกับtagsอาร์เรย์? หมายเหตุ : ฉันได้นำตัวอย่างมาจากเว็บไซต์ MongoDB ฉันไม่ทราบโครงสร้างของtagsอาร์เรย์ ฉันคิดว่ามันเป็นชื่อแท็กที่เรียบง่าย

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