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

MongoDB เป็นฐานข้อมูล NoSQL ที่ปรับขนาดได้และมีประสิทธิภาพสูง รองรับภาษาจำนวนมากและแพลตฟอร์มการพัฒนาแอปพลิเคชัน คำถามเกี่ยวกับการดูแลเซิร์ฟเวอร์สามารถสอบถามได้ที่ https://dba.stackexchange.com

9
ใช้กรณีสำหรับ NoSQL [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ NoSQL ได้รับความสนใจอย่างมากในอุตสาหกรรมของเราเมื่อเร็ว ๆ นี้ ฉันสนใจสิ่งที่ผู้คนคิดว่าดีที่สุดในการใช้งานเคสสำหรับการใช้งานมากกว่าการจัดเก็บฐานข้อมูลเชิงสัมพันธ์ สิ่งที่ควรทริกเกอร์นักพัฒนาให้คิดว่าชุดข้อมูลเฉพาะเหมาะสมกว่าโซลูชัน NoSQL ฉันสนใจเป็นพิเศษกับMongoDBและCouchDBเนื่องจากพวกเขาดูเหมือนจะครอบคลุมมากที่สุดเกี่ยวกับการพัฒนา PHP และนั่นคือสิ่งที่ฉันให้ความสำคัญ

2
วิธีการตรวจสอบว่าเขตข้อมูลอาร์เรย์มีค่าที่ไม่ซ้ำกันหรืออาร์เรย์อื่นใน MongoDB?
ตอนนี้ฉันกำลังใช้ mongodb ฉันมีคอลเลกชันของโพสต์บล็อกและโพสต์ในบล็อกมีแท็กซึ่งเป็นอาเรย์เช่น blogpost1.tags = ['tag1', 'tag2', 'tag3', 'tag4', 'tag5'] blogpost2.tags = ['tag2', 'tag3'] blogpost3.tags = ['tag2', 'tag3', 'tag4', 'tag5'] blogpost4.tags = ['tag1', 'tag4', 'tag5'] ฉันจะค้นหาสิ่งเหล่านี้ได้อย่างไร มี 'tag1' มี ['tag1', 'tag2'], มี ['tag3', 'tag4'] ใด ๆ
143 mongodb 

4
MongoDB หลายต่อหลายสมาคม
คุณจะทำความสัมพันธ์แบบกลุ่มต่อกลุ่มกับ MongoDB ได้อย่างไร? ตัวอย่างเช่น; สมมติว่าคุณมีตารางผู้ใช้และตารางบทบาท ผู้ใช้มีหลายบทบาทและบทบาทมีผู้ใช้หลายคน ใน SQL land คุณจะสร้างตาราง UserRoles Users: Id Name Roles: Id Name UserRoles: UserId RoleId ความสัมพันธ์แบบเดียวกันนั้นจัดการกับ MongoDB อย่างไร

6
วิธีการเข้าถึงคอลเลกชันที่มีมาก่อนกับพังพอน?
ฉันมีคอลเลกชันขนาดใหญ่ของ 300 วัตถุในฐานข้อมูลquestion testฉันสามารถโต้ตอบกับคอลเลคชันนี้ได้อย่างง่ายดายผ่านเชลล์แบบโต้ตอบของ MongoDB อย่างไรก็ตามเมื่อฉันพยายามรับคอลเลกชันผ่าน Mongoose ในแอปพลิเคชัน express.js ฉันได้รับอาร์เรย์ว่างเปล่า คำถามของฉันคือฉันจะเข้าถึงชุดข้อมูลที่มีอยู่แล้วนี้แทนที่จะสร้างใหม่แบบด่วนได้อย่างไร นี่คือรหัสบางส่วน: var mongoose = require('mongoose'); var Schema = mongoose.Schema; mongoose.connect('mongodb://localhost/test'); mongoose.model('question', new Schema({ url: String, text: String, id: Number })); var questions = mongoose.model('question'); questions.find({}, function(err, data) { console.log(err, data, data.length); }); ผลลัพธ์นี้: null [] 0

11
ลบโดย _id ในคอนโซล MongoDB
ในคอนโซล MongoDB ฉันจะลบเร็กคอร์ดด้วย id ได้อย่างไร? นี่คือคอลเล็กชันของฉัน: [ { "_id" : { "$oid" : "4d512b45cc9374271b02ec4f" }, "name" : "Gazza" }, { "_id" : { "$oid" : "4d513345cc9374271b02ec6c" }, "name" : "Dave", "adminOf" : { }, "email" : "email@email.com" } ] และนี่คือคำสั่งที่ฉันลองแล้วไม่ได้ผล: db.test_users.remove( {"_id":{"$oid":new ObjectId("4d512b45cc9374271b02ec4f")}}); db.test_users.remove( {"_id":{"$oid":"4d513345cc9374271b02ec6c"}}); db.test_users.remove( {"_id":"4d512b45cc9374271b02ec4f"}); db.test_users.remove( {"_id":new ObjectId("4d512b45cc9374271b02ec4f")}); …
143 mongodb 

5
วิธีค้นหารุ่นที่แน่นอนของ MongoDB ที่ติดตั้งไว้
ฉันมี mongoDB 3.2 ติดตั้งไว้ในเครื่องสำหรับ Windows 7 ฉันต้องการค้นหารุ่นเฉพาะ (เช่น is 3.2.1 หรือ 3.2.3 หรือ ... ) ฉันจะหามันเจอได้อย่างไร? ถ้าฉันเปิดฐานข้อมูลเชลล์ (mongo.exe) ฉันจะเห็นผลลัพธ์: MongoDB shell เวอร์ชั่น: 3.2.0 แต่นั่นเป็นเพียงรุ่นของเชลล์และฉันไม่แน่ใจว่าเป็นรุ่นฐานข้อมูลจริงของฉันหรือไม่
142 mongodb 

8
เมื่อใดที่ฉันควรใช้ฐานข้อมูล NoSQL แทนฐานข้อมูลเชิงสัมพันธ์ มันใช้ได้ไหมที่จะใช้ทั้งสองอย่างในเว็บไซต์เดียวกัน?
ข้อดีของการใช้ฐานข้อมูล NoSQL คืออะไร ฉันอ่านมากเกี่ยวกับพวกเขาเมื่อเร็ว ๆ นี้ แต่ฉันก็ยังไม่แน่ใจว่าทำไมฉันจึงต้องการที่จะใช้หนึ่งและภายใต้สถานการณ์ที่ฉันต้องการที่จะใช้
141 mongodb  couchdb  nosql 

6
MongoDB / Mongoose สอบถามข้อมูลในวันที่กำหนด?
เป็นไปได้หรือไม่ที่จะสืบค้นวันที่ที่เฉพาะเจาะจง ฉันพบใน Cookbook mongo ที่เราสามารถทำได้สำหรับช่วงQuerying สำหรับช่วงวันที่ แบบนั้น: db.posts.find({"created_on": {"$gte": start, "$lt": end}}) แต่มันเป็นไปได้สำหรับวันที่ระบุหรือไม่ สิ่งนี้ใช้ไม่ได้: db.posts.find({"created_on": new Date(2012, 7, 14) })

10
วิธีแก้ไขการขาดธุรกรรมใน MongoDB?
ฉันรู้ว่ามีคำถามที่คล้ายกันที่นี่ แต่พวกเขามีทั้งบอกฉันเปลี่ยนกลับไปใช้ระบบ RDBMS ปกติถ้าผมต้องทำธุรกรรมหรือใช้การดำเนินงานของอะตอมหรือสองเฟสกระทำ ทางออกที่สองดูเหมือนจะเป็นทางเลือกที่ดีที่สุด ข้อที่สามฉันไม่ต้องการติดตามเพราะดูเหมือนว่ามีหลายสิ่งผิดปกติและฉันไม่สามารถทดสอบได้ในทุกด้าน ฉันมีเวลาในการปรับโครงสร้างโครงการของฉันอีกครั้งเพื่อดำเนินการปรมาณู ฉันไม่ทราบว่าสิ่งนี้มาจากมุมมองที่ จำกัด ของฉัน (ฉันเพิ่งทำงานกับฐานข้อมูล SQL จนถึงปัจจุบัน) หรือไม่สามารถทำได้จริง ๆ หรือไม่ เราต้องการทดสอบนำร่อง MongoDB ที่ บริษัท ของเรา เราเลือกโครงการง่ายๆ - เกตเวย์ SMS ช่วยให้ซอฟต์แวร์ของเราส่งข้อความ SMS ไปยังเครือข่ายเซลลูลาร์และเกตเวย์ทำงานได้ไม่ดี: สื่อสารกับผู้ให้บริการผ่านโปรโตคอลการสื่อสารที่แตกต่างกัน เกตเวย์ยังจัดการการเรียกเก็บเงินของข้อความด้วย ลูกค้าทุกคนที่สมัครใช้บริการจะต้องซื้อเครดิตบ้าง ระบบจะลดยอดคงเหลือของผู้ใช้โดยอัตโนมัติเมื่อมีการส่งข้อความและปฏิเสธการเข้าถึงหากยอดเงินไม่เพียงพอ และเนื่องจากเราเป็นลูกค้าของผู้ให้บริการ SMS บุคคลที่สามเราจึงอาจมียอดคงเหลือเป็นของตนเอง เราต้องติดตามสิ่งเหล่านั้นด้วย ฉันเริ่มคิดว่าฉันสามารถจัดเก็บข้อมูลที่ต้องการด้วย MongoDB ได้อย่างไรหากฉันลดความซับซ้อนลง (การเรียกเก็บเงินภายนอกการส่ง SMS ที่อยู่ในคิว) มาจากโลก SQL ฉันจะสร้างตารางแยกต่างหากสำหรับผู้ใช้อีกอันหนึ่งสำหรับข้อความ SMS และอีกอันสำหรับจัดเก็บธุรกรรมที่เกี่ยวข้องกับยอดคงเหลือของผู้ใช้ สมมติว่าฉันสร้างคอลเลกชันแยกสำหรับทุกคนใน MongoDB ลองนึกภาพงานส่ง …

11
วิธีที่ถูกต้องในการเริ่มบริการ mongod บน linux / OS X คืออะไร?
ฉันได้ติดตั้ง mongodb และสามารถเรียกใช้ทำงานกับมันทำสิ่งประเภทอ่าน / เขียน DB อย่างง่าย ตอนนี้ฉันกำลังพยายามตั้งค่า Mac ให้เรียกใช้ mongod เป็นบริการ ฉันได้รับ "ไม่พบคำสั่ง" เพื่อตอบสนองต่อ: init mongod start เพื่อตอบสนองต่อ: ~: service mongod start service: This command still works, but it is deprecated. Please use launchctl(8) instead. service: failed to start the 'mongod' service และถ้าฉันลอง: ~: launchctl start mongod launchctl start …

6
BadValue ไม่ถูกต้องหรือไม่มีชุดภาษาของผู้ใช้ โปรดตรวจสอบให้แน่ใจว่าได้ตั้งค่าตัวแปรสภาพแวดล้อม LANG และ / หรือ LC_ * อย่างถูกต้อง
เมื่อฉันวิ่งmongoฉันได้รับคำเตือน: การเริ่มต้นส่วนกลางล้มเหลว: BadValue ไม่ถูกต้องหรือไม่มีชุดภาษาของผู้ใช้ โปรดตรวจสอบให้แน่ใจว่าได้ตั้งค่าตัวแปรสภาพแวดล้อม LANG และ / หรือ LC_ * อย่างถูกต้อง
136 linux  mongodb  ubuntu 

5
MongoDB / NoSQL: การเก็บประวัติการเปลี่ยนแปลงเอกสาร
ข้อกำหนดทั่วไปในแอปพลิเคชันฐานข้อมูลคือการติดตามการเปลี่ยนแปลงของเอนทิตีเฉพาะอย่างน้อยหนึ่งรายการในฐานข้อมูล ฉันเคยได้ยินสิ่งนี้เรียกว่าการกำหนดเวอร์ชันแถวตารางบันทึกหรือตารางประวัติ (ฉันแน่ใจว่ามีชื่ออื่นอยู่) มีหลายวิธีในการเข้าถึงใน RDBMS - คุณสามารถเขียนการเปลี่ยนแปลงทั้งหมดจากตารางต้นทางทั้งหมดไปยังตารางเดียว (บันทึกเพิ่มเติม) หรือมีตารางประวัติแยกต่างหากสำหรับแต่ละตารางต้นทาง นอกจากนี้คุณยังมีตัวเลือกในการจัดการการล็อกอินรหัสแอปพลิเคชันหรือผ่านทริกเกอร์ฐานข้อมูล ฉันกำลังพยายามคิดว่าวิธีแก้ปัญหาเดียวกันจะเป็นอย่างไรในฐานข้อมูล NoSQL / document (โดยเฉพาะ MongoDB) และจะแก้ไขอย่างไรในลักษณะเดียวกัน มันจะง่ายเหมือนการสร้างหมายเลขเวอร์ชันสำหรับเอกสารและไม่เขียนทับหรือไม่ การสร้างคอลเล็กชันแยกต่างหากสำหรับเอกสาร "ของจริง" กับ "บันทึก" สิ่งนี้จะส่งผลต่อการสืบค้นและประสิทธิภาพอย่างไร อย่างไรก็ตามนี่เป็นสถานการณ์ทั่วไปสำหรับฐานข้อมูล NoSQL และถ้าเป็นเช่นนั้นมีวิธีแก้ปัญหาทั่วไปหรือไม่?
134 mongodb  nosql 

4
ฉันจะสร้าง ObjectId ด้วยพังพอนได้อย่างไร
ฉันต้องการสร้าง MongoDB ObjectIdด้วย Mongoose มีวิธีเข้าถึงตัวObjectIdสร้างจากพังพอนหรือไม่? คำถามนี้เกี่ยวกับการสร้างสิ่งใหม่ ObjectIdตั้งแต่ต้น รหัสที่สร้างขึ้นเป็นรหัสใหม่ที่ไม่ซ้ำกันในระดับสากล อีกคำถามหนึ่งถามเกี่ยวกับการสร้างObjectIdจากการแสดงสตริงที่มีอยู่ ในกรณีนี้คุณมีการแสดง ID เป็นสตริงอยู่แล้วซึ่งอาจเป็นหรือไม่ซ้ำกันในระดับสากลก็ได้และคุณกำลังแยกวิเคราะห์เป็นObjectIdไฟล์.

10
db.collection ไม่ใช่ฟังก์ชันเมื่อใช้ MongoClient v3.0
ฉันได้ลองใช้การสอน W3schools บน nodeJS กับ MongoDB แล้ว เมื่อฉันพยายามใช้ตัวอย่างนี้ในสภาพแวดล้อม nodeJS และเรียกใช้ฟังก์ชันด้วยการเรียก AJAX ฉันได้รับข้อผิดพลาดด้านล่าง: TypeError: db.collection is not a function at c:\Users\user\Desktop\Web Project\WebService.JS:79:14 at args.push (c:\Users\user\node_modules\mongodb\lib\utils.js:431:72) at c:\Users\user\node_modules\mongodb\lib\mongo_client.js:254:5 at connectCallback (c:\Users\user\node_modules\mongodb\lib\mongo_client.js:933:5) at c:\Users\user\node_modules\mongodb\lib\mongo_client.js:794:11 at _combinedTickCallback (internal/process/next_tick.js:73:7) at process._tickCallback (internal/process/next_tick.js:104:9) โปรดค้นหารหัสที่ฉันนำไปใช้ด้านล่าง: var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/mytestingdb"; MongoClient.connect(url, function(err, db) { …
132 node.js  mongodb 

3
ตรวจสอบว่า Field นั้นมีอยู่ด้วย MongoDB
ดังนั้นฉันพยายามค้นหาระเบียนทั้งหมดที่มีชุดเขตข้อมูลและไม่เป็นค่าว่าง ฉันลองใช้$existsอย่างไรก็ตามตามเอกสาร MongoDBแบบสอบถามนี้จะคืนค่าเขตข้อมูลที่มีค่าเป็นศูนย์ $exists จับคู่เอกสารที่มีเขตข้อมูลที่เก็บค่า Null ดังนั้นตอนนี้ฉันสมมติว่าฉันจะต้องทำสิ่งนี้: db.collection.find({ "fieldToCheck" : { $exists : true, $not : null } }) เมื่อใดก็ตามที่ฉันพยายามนี้ แต่ผมได้รับข้อผิดพลาด[invalid use of $not] ทุกคนมีความคิดของวิธีการแบบสอบถามสำหรับนี้หรือไม่?
131 mongodb 

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