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

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

7
Redis เร็วกว่า mongoDB เร็วเท่าใด
มีการกล่าวถึงอย่างกว้างขวางว่า Redis คือ "Blazing Fast" และ mongoDB นั้นก็รวดเร็วเช่นกัน แต่ฉันมีปัญหาในการหาตัวเลขจริงเปรียบเทียบผลลัพธ์ของทั้งสอง ด้วยการกำหนดค่าคุณสมบัติและการทำงานที่คล้ายกัน (และอาจแสดงให้เห็นว่าปัจจัยที่เปลี่ยนแปลงไปด้วยการกำหนดค่าและการทำงานที่แตกต่างกัน) ฯลฯ Redis เร็วขึ้น 10 เท่าหรือไม่ 2x เร็วกว่าหรือเร็วขึ้น 5 เท่า? ฉันพูดถึงการแสดงเท่านั้น ฉันเข้าใจว่า mongoDB เป็นเครื่องมือที่แตกต่างและมีชุดคุณลักษณะที่สมบูรณ์ยิ่งขึ้น นี่ไม่ใช่ "is mongoDB ที่ดีกว่าอภิปรายกว่า Redis" ฉันถามว่า Redis มีประสิทธิภาพเหนือกว่า mongoDB อย่างไร ณ จุดนี้แม้การวัดประสิทธิภาพราคาถูกจะดีกว่าการไม่มีการวัดประสิทธิภาพ

3
วิธีสืบค้นวัตถุที่ซ้อนกัน
ฉันมีปัญหาเมื่อสอบถาม mongoDB ด้วยสัญกรณ์วัตถุที่ซ้อนกัน: db.messages.find( { headers : { From: "reservations@marriott.com" } } ).count() 0 db.messages.find( { 'headers.From': "reservations@marriott.com" } ).count() 5 ฉันไม่เห็นสิ่งที่ฉันทำผิด ฉันคาดหวังว่าสัญกรณ์วัตถุที่ซ้อนกันเพื่อกลับผลลัพธ์เช่นเดียวกับแบบสอบถามจุดสัญกรณ์ ฉันผิดตรงไหน

3
MongoDB - อัปเดตวัตถุในอาร์เรย์ของเอกสาร (การอัปเดตที่ซ้อนกัน)
สมมติว่าเรามีคอลเล็กชันต่อไปนี้ซึ่งฉันมีคำถามสองสามข้อเกี่ยวกับ: { "_id" : ObjectId("4faaba123412d654fe83hg876"), "user_id" : 123456, "total" : 100, "items" : [ { "item_name" : "my_item_one", "price" : 20 }, { "item_name" : "my_item_two", "price" : 50 }, { "item_name" : "my_item_three", "price" : 30 } ] } 1 - ฉันต้องการเพิ่มราคาสำหรับ "item_name": "my_item_two" และหากไม่มีอยู่ก็ควรผนวกเข้ากับอาร์เรย์ "items" 2 - ฉันจะอัปเดตสองฟิลด์พร้อมกันได้อย่างไร …
204 mongodb 

6
จะแสดงรายการฐานข้อมูลทั้งหมดในเปลือก mongo ได้อย่างไร
ฉันรู้วิธีแสดงรายการคอลเล็กชันทั้งหมดในฐานข้อมูลเฉพาะแต่ฉันจะแสดงรายการฐานข้อมูลที่มีอยู่ทั้งหมดใน MongoDB เชลล์ได้อย่างไร
204 mongodb 

11
วิธีฟังการเปลี่ยนแปลงคอลเลกชัน MongoDB อย่างไร
ฉันกำลังสร้างระบบคิวงานแบ็คกราวน์ที่มี MongoDB เป็นแหล่งข้อมูล ฉันจะ "ฟัง" เพื่อแทรกการรวบรวม MongoDB ก่อนที่จะวางไข่เพื่อประมวลผลงานได้อย่างไร ฉันต้องสำรวจทุกสองสามวินาทีเพื่อดูว่ามีการเปลี่ยนแปลงใด ๆ จากครั้งที่แล้วหรือไม่หรือมีวิธีที่สคริปต์ของฉันสามารถรอการแทรกเกิดขึ้นได้หรือไม่? นี่เป็นโปรเจ็กต์ PHP ที่ฉันกำลังทำงาน แต่รู้สึกฟรีที่จะตอบใน Ruby หรือผู้ไม่เชื่อเรื่องภาษา
200 mongodb 

14
MongoDB - ผู้ดูแลระบบไม่ได้รับอนุญาต
ฉันพยายามเพิ่มการอนุญาตให้ MongoDB ของฉัน ฉันทำทั้งหมดนี้บน Linux ด้วย MongoDB 2.6.1 ไฟล์ mongod.conf ของฉันอยู่ในรูปแบบความเข้ากันได้แบบเก่า (นี่คือวิธีที่มันมาพร้อมกับการติดตั้ง) 1) ฉันสร้างผู้ดูแลระบบตามที่อธิบายไว้ที่นี่ใน (3) http://docs.mongodb.org/manual/tutorial/add-user-administrator/ 2) ฉันแก้ไข mongod.conf โดยไม่แสดงข้อคิดเห็นบรรทัดนี้ auth = true 3) ในที่สุดฉันก็เริ่มบริการ mongod และฉันพยายามที่จะเข้าสู่ระบบด้วย: /usr/bin/mongo localhost:27017/admin -u sa -p pwd 4) ฉันสามารถเชื่อมต่อ แต่มันบอกว่านี้เมื่อเชื่อมต่อ MongoDB shell version: 2.6.1 connecting to: localhost:27017/admin Welcome to the MongoDB shell! The current …
200 mongodb  admin 

7
การเปรียบเทียบพังพอน _id และสตริง
ฉันมีแอปพลิเคชั่น node.js ที่ดึงข้อมูลบางส่วนและติดเข้าไปในวัตถุเช่นนี้ var results = new Object(); User.findOne(query, function(err, u) { results.userId = u._id; } เมื่อฉันทำ if / then ตาม ID ที่เก็บไว้นั้นการเปรียบเทียบจะไม่เป็นจริง: if (results.userId == AnotherMongoDocument._id) { console.log('This is never true'); } เมื่อฉันทำ console.log ของทั้งสอง id พวกเขาตรงกับ: User id: 4fc67871349bb7bf6a000002 AnotherMongoDocument id: 4fc67871349bb7bf6a000002 ฉันสมมติว่านี่เป็นปัญหาประเภทข้อมูลบางอย่าง แต่ฉันไม่แน่ใจว่าจะแปลง results.userId เป็นประเภทข้อมูลที่จะส่งผลให้การเปรียบเทียบข้างต้นเป็นจริงและสมองที่ได้รับการว่าจ้างจากภายนอก (aka Google) …

21
วิธีใช้ mongoimport เพื่อนำเข้า csv
กำลังพยายามนำเข้า CSV ด้วยข้อมูลติดต่อ: Name,Address,City,State,ZIP Jane Doe,123 Main St,Whereverville,CA,90210 John Doe,555 Broadway Ave,New York,NY,10010 การรันสิ่งนี้ดูเหมือนจะไม่เพิ่มเอกสารใด ๆ ในฐานข้อมูล: $ mongoimport -d mydb -c things --type csv --file locations.csv --headerline Trace พูดว่าimported 1 objectsแต่การยิง Mongo shell และการรันdb.things.find()ไม่แสดงเอกสารใหม่ ฉันกำลังคิดถึงอะไร

10
การสืบค้นวันที่ด้วย ISODate ใน mongodb ดูเหมือนจะไม่ทำงาน
ฉันดูเหมือนจะไม่ได้รับแม้แต่แบบสอบถามวันที่พื้นฐานที่สุดในการทำงานใน MongoDB ด้วยเอกสารที่มีลักษณะดังนี้: { "_id" : "foobar/201310", "ap" : "foobar", "dt" : ISODate("2013-10-01T00:00:00.000Z"), "tl" : 375439 } และแบบสอบถามที่มีลักษณะเช่นนี้: { "dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z" } } } ฉันได้รับ0 ผลลัพธ์จากการดำเนินการ: db.mycollection.find({ "dt" : { "$gte" : { "$date" : "2013-10-01T00:00:00.000Z"}} }) ความคิดใด ๆ ที่ว่าทำไมมันถึงไม่ทำงาน? สำหรับการอ้างอิงการค้นหานี้ถูกสร้างขึ้นโดยMongoTemplate ของ Springดังนั้นฉันจึงไม่สามารถควบคุมการสอบถามที่ส่งไปยัง …
189 json  mongodb  bson  isodate 

6
อนุสัญญาการตั้งชื่อสำหรับ MongoDB คืออะไร
มีชุดของอนุสัญญาการตั้งชื่อที่ต้องการสำหรับสิทธิ์ MongoDB เช่นฐานข้อมูล, คอลเลกชัน, ชื่อฟิลด์หรือไม่? ฉันกำลังคิดตามบรรทัดเหล่านี้: ฐานข้อมูล: ประกอบด้วยวัตถุประสงค์ (คำเป็นเอกพจน์) และลงท้ายด้วย“ db” - ตัวพิมพ์เล็กทั้งหมด: imagedb, resumedb, memberdb ฯลฯ คอลเลกชัน: พหูพจน์ในกรณีที่ต่ำกว่า: รูปภาพ, ประวัติย่อ, ฟิลด์เอกสาร: lowerCamelCase เช่น memberFirstName, fileName ฯลฯ

28
ไม่สามารถสร้าง / เปิดไฟล์ล็อค: /data/mongod.lock ข้อผิดพลาด: 13 การอนุญาตถูกปฏิเสธ
ฉันจะให้ Mongo ใช้ไดรฟ์ที่ติดตั้งบน ec2 ได้อย่างไร ฉันไม่เข้าใจจริงๆ ฉันแนบไดรฟ์ข้อมูลบน ec2 ที่จัดรูปแบบไดรฟ์เป็นรูทและเริ่มต้นเป็นรูทและยังเป็นรูทที่ฉันเข้าถึงไม่ได้หรือไม่ ฉันทำงานบน Ubuntu 12.04 ไม่มีคนอื่นทำงาน mongo ฉันเห็นว่า mongo สร้าง 'db' dir in / data เช่น / data / db cd / ls -al drwxr-xr-x 4 root root 4096 Mar 5 16:28 data cd /data ls -al total 28 drwxr-xr-x 4 root root …
187 mongodb 

4
ความเป็นไปได้ในการสร้าง Mongo ObjectId ซ้ำกันในสองคอลเล็กชั่นที่แตกต่างกันหรือไม่
เป็นไปได้หรือไม่ที่ Mongo ObjectId ที่เหมือนกันจะถูกสร้างขึ้นสำหรับเอกสารในคอลเล็กชั่นสองชุดที่แตกต่างกัน? ฉันรู้ว่ามันไม่น่าเป็นไปได้อย่างแน่นอน แต่เป็นไปได้ไหม โดยไม่เจาะจงเกินไปเหตุผลที่ฉันถามก็คือด้วยแอปพลิเคชันที่ฉันกำลังทำงานอยู่เราแสดงโปรไฟล์สาธารณะของเจ้าหน้าที่ที่ได้รับการเลือกตั้งซึ่งเราหวังว่าจะเปลี่ยนเป็นผู้ใช้เว็บไซต์ของเราอย่างสมบูรณ์ เรามีคอลเล็กชันแยกต่างหากสำหรับผู้ใช้และเจ้าหน้าที่ที่ได้รับการเลือกตั้งซึ่งยังไม่ได้เป็นสมาชิกในเว็บไซต์ของเรา มีเอกสารอื่น ๆ อีกมากมายที่มีข้อมูลส่วนต่าง ๆ เกี่ยวกับเจ้าหน้าที่ที่ได้รับการเลือกตั้งซึ่งแผนที่ทั้งหมดกลับไปยังบุคคลโดยใช้ ObjectId ที่ได้รับการเลือกตั้งอย่างเป็นทางการของพวกเขา หลังจากสร้างบัญชีเรายังคงเน้นข้อมูลที่เกี่ยวข้องกับการเลือกตั้งอย่างเป็นทางการ แต่ตอนนี้พวกเขายังเป็นส่วนหนึ่งของคอลเลกชันผู้ใช้ที่มีผู้ใช้ ObjectId ที่สอดคล้องกันเพื่อแมปโปรไฟล์ของพวกเขาเพื่อโต้ตอบกับแอปพลิเคชันของเรา เราได้เริ่มแปลงใบสมัครของเราจาก MySql เป็น Mongo เมื่อไม่กี่เดือนที่ผ่านมาและในขณะที่เราอยู่ในช่วงการเปลี่ยนภาพเราได้จัดเก็บ MySql id ดั้งเดิมสำหรับทั้งสองประเภทข้อมูลเหล่านี้และเราก็เริ่มเก็บ Mongo ObjectId เอกสารเพื่อทำแผนที่กลับไปยังข้อมูลทางการที่ได้รับการเลือกตั้ง ฉันไตร่ตรองเพียงระบุผู้ใช้ใหม่เป็น ObjectId ที่ได้รับการเลือกตั้งก่อนหน้านี้เพื่อทำให้สิ่งต่าง ๆ ง่ายขึ้น แต่ต้องการตรวจสอบให้แน่ใจว่าเป็นไปไม่ได้ที่จะมีการชนกับ ObjectId ผู้ใช้ที่มีอยู่ ขอบคุณสำหรับความเข้าใจของคุณ แก้ไข: ไม่นานหลังจากโพสต์คำถามนี้ฉันรู้ว่าโซลูชันที่เสนอของฉันไม่ใช่ความคิดที่ดีมาก มันจะเป็นการดีกว่าที่จะเก็บสคีมาปัจจุบันที่เรามีอยู่และเชื่อมโยงกับเจ้าหน้าที่ '_id' ที่ได้รับการเลือกตั้งในเอกสารผู้ใช้
187 mongodb  database  nosql 

6
ผลักรายการลงในอาร์เรย์ mongo ผ่าน mongoose
ฉันค้นหาคำตอบแล้ว แต่ฉันแน่ใจว่าฉันหายไปเพราะคำพูดที่ถูกต้องเพื่ออธิบายสิ่งที่ฉันตามมา โดยทั่วไปฉันมีคอลเลกชัน MongoDB ที่เรียกว่า 'people' schema สำหรับการรวบรวมนั้นมีดังนี้: people: { name: String, friends: [{firstName: String, lastName: String}] } ตอนนี้ฉันมีแอปพลิเคชันด่วนขั้นพื้นฐานที่เชื่อมต่อกับฐานข้อมูลและสร้าง 'คน' ด้วยอาร์เรย์เพื่อนที่ว่างเปล่าได้สำเร็จ ในตำแหน่งรองในแอปพลิเคชันจะมีแบบฟอร์มเพื่อเพิ่มเพื่อน แบบฟอร์มที่ใช้ในชื่อและนามสกุลจากนั้นโพสต์พร้อมกับฟิลด์ชื่อยังสำหรับการอ้างอิงถึงวัตถุคนที่เหมาะสม สิ่งที่ฉันกำลังลำบากในการทำคือการสร้างวัตถุเพื่อนใหม่แล้ว "ผลัก" วัตถุนั้นลงในอาร์เรย์เพื่อน ฉันรู้ว่าเมื่อฉันทำสิ่งนี้ผ่านทางคอนโซล mongo ฉันใช้ฟังก์ชั่นอัพเดทด้วย $ push เป็นอาร์กิวเมนต์ที่สองของฉันหลังจากเกณฑ์การค้นหา แต่ฉันไม่สามารถหาวิธีที่เหมาะสมเพื่อให้พังพอนทำเช่นนี้ db.people.update({name: "John"}, {$push: {friends: {firstName: "Harry", lastName: "Potter"}}}); ปรับปรุง: ดังนั้นคำตอบของเอเดรียเป็นประโยชน์มาก ต่อไปนี้เป็นสิ่งที่ฉันทำเพื่อบรรลุเป้าหมาย ในไฟล์ app.js ของฉันฉันกำหนดเส้นทางชั่วคราวโดยใช้ app.get('/addfriend', users.addFriend); ฉันอยู่ที่ไหนในไฟล์ …

9
การเปลี่ยนไดเรกทอรีที่เก็บข้อมูล MongoDB
จนถึงตอนนี้ฉันยังไม่ได้ระบุไดเรกทอรีข้อมูล MongoDB และมีพาร์ติชันหลักเพียง 30 GB เท่านั้น ฉันเพิ่งหมดพื้นที่และเพิ่มฮาร์ดดิสก์ใหม่ ฉันจะถ่ายโอนข้อมูลของฉัน (ที่เห็นได้ชัดใน/var/lib/mongodb/) และกำหนดค่า MongoDB เพื่อให้ทุกอย่างทำงานของดิสก์ใหม่โดยไม่ส่งผลกระทบต่อการติดตั้งปัจจุบันของฉันได้อย่างไร

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) อย่างไรก็ตามมันจะอัพเดทเฉพาะองค์ประกอบอาเรย์แรกที่ตรงกันในแต่ละเอกสาร (นั่นเป็นพฤติกรรมที่กำหนดไว้สำหรับ$ - ผู้ประกอบการตำแหน่ง ) ฉันจะอัปเดตองค์ประกอบอาร์เรย์ที่ตรงกันทั้งหมดได้อย่างไร

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