Mongo ไม่พบคอลเล็กชันของฉัน


10

เซิร์ฟเวอร์ mongodb ของฉันมีฐานข้อมูลชื่อ villageContents

มันมีคอลเลกชันชื่อ tablebusiness

ถ้าฉันวิ่ง mongo ฉันเห็น

MongoDB shell version: 2.0.7
connecting to: test
>

ฉันสงสัยว่า "การทดสอบ" คืออะไร ไม่มีฐานข้อมูลชื่อทดสอบอยู่ที่นั่น

ฉันพยายามที่จะรัน

> villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})
Wed Aug 15 09:28:28 ReferenceError:is not defined (shell):1
>

ฉันพยายามที่จะรัน

> test.villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})
Wed Aug 15 09:29:13 ReferenceError: test is not defined (shell):1
>

ฉันทำอะไรผิด?

จากนั้นฉันก็ทำ

db.villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})

ไม่มีอะไรปรากฏขึ้น ดัชนีจะไม่ถูกเพิ่มแม้แต่

แล้วมีอะไรผิดปกติ?

คำตอบ:


8

ฉันสงสัยว่า "การทดสอบ" คืออะไร ไม่มีฐานข้อมูลชื่อทดสอบอยู่ที่นั่น

นี่เป็นเพียงฐานข้อมูลเริ่มต้นที่เชลล์ mongo ใช้เมื่อเชื่อมต่อเว้นแต่คุณจะแทรกบางสิ่งมันจะว่างเปล่า คุณสามารถทำได้กับฐานข้อมูลใด ๆ ในความเป็นจริงการทดสอบเป็นเพียงค่าเริ่มต้น

คำสั่งแรกจะไม่ทำงานเพราะคุณไม่ได้ใส่คำนำหน้าด้วย db ดังนั้นจึงพยายามค้นหา "isikota" เป็นตัวแปร (javascript) และไม่สามารถค้นหาได้ ในทำนองเดียวกันความพยายามครั้งต่อไปของคุณจะทำเช่นเดียวกันกับตัวแปร "test" ที่ไม่มีอยู่จริง

ในที่สุดคำสั่งนี้เป็นรูปแบบที่ถูกต้อง (นำหน้าด้วย db):

db.isikota.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"})

แต่คุณไม่ได้เปลี่ยนฐานข้อมูล (ด้วยuse <database name>) หรืออย่างน้อยคุณไม่ได้พูดถึงการพยายามอย่างน้อย สิ่งนี้จะทำคือการสร้างดัชนี 2d (geoindex) ในฟิลด์ "ละติจูดลองจิจูด" บนคอลเลกชันชื่อ "isikota.tablebusiness" ในฐานข้อมูลการทดสอบ (db เสมอหมายถึงฐานข้อมูลที่คุณกำลังใช้) แม้ว่าคอลเลกชันนี้จะไม่มีอยู่ดัชนีจะถูกสร้างขึ้น (นี่เป็นเพียงการแทรกลงใน system.indexes namespace) และด้วยเหตุนี้คำสั่งจะประสบความสำเร็จ คุณไม่เห็นอะไรเลยเพราะฉันเชื่อว่าคุณยังคงใช้งานฐานข้อมูลทดสอบอยู่

สมมติว่าข้อมูลของคุณอยู่ในฐานข้อมูลที่เรียกว่า "isikota" และ "tablebusiness" เป็นคอลเลกชันของคุณสิ่งที่คุณต้องการทำคือ:

use isikota;
db.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"});

ที่จะสร้างดัชนีในฟิลด์ "LatitudeLongitude" ในคอลเลกชันชื่อ "tablebusiness" ในฐานข้อมูลชื่อ "isikota"


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