मैं जानना चाहूंगा कि क्या डेटाबेस संग्रह के लिए एक सम्मेलन है जैसे:
PageVisit
या page_visit
।
क्या इन सूचनाओं के लिए कोई फायदे / नुकसान हैं?
जवाबों:
सामान्य सम्मेलन हैं:
उदाहरण:
users
pagevisits
users.pagevisits
फ़ील्ड नेम कन्वेंशन (चाहिए) कुछ उसी तर्क का पालन करते हैं, हालांकि ऊंट आवरण उन काफी आम है।
बस अपने संग्रह नामों में हाइफ़न का उपयोग करने से बचें।
और ऐसा केवल इसलिए है, क्योंकि यदि आप नीचे दिए गए दो कॉल्स का उपयोग करते हैं, तो पहला अमान्य जावास्क्रिप्ट है:
db.foo-bar.find();
db['foo-bar'].find();
वे दोनों कार्यात्मक रूप से समान हैं, लेकिन दूसरा टाइप करने के लिए थोड़ा अधिक कष्टप्रद है और टैब-पूर्ण नहीं है।
इसके अलावा, फायदे / नुकसान संग्रह के आपके उपयोग पर निर्भर करते हैं। सुसंगत होना अधिक महत्वपूर्ण है कि आप किस सम्मेलन का चयन करते हैं।
:
संग्रह नाम रखने के लिए मान्य हैं, जैसे foo:bar
?
db["\n"].insert({});
- कोई त्रुटि नहीं। विचार करने वाली चीजें ज्यादातर आपके द्वारा उपयोग किए जा रहे ड्राइवर के साथ सुविधा होती हैं।
में http://docs.mongodb.org/manual/reference/limits/ , मैनुअल कहा गया है कि संग्रह के नाम एक साथ शुरू करना चाहिए अंडरस्कोर ( '_') या एक पत्र चरित्र, और नहीं कर सकते हैं:
- $ होते हैं।
- एक रिक्त स्ट्रिंग (उदाहरण के लिए "") बनें।
- अशक्त चरित्र होते हैं।
- सिस्टम से शुरू करें। उपसर्ग। (आंतरिक उपयोग के लिए आरक्षित।)
हालांकि, यदि आप नियम का पालन करते हैं और '_' के साथ शुरुआती अक्षर के रूप में एक संग्रह बनाते हैं, जैसे कि "_TWII", तो आप उस समय परेशानी का सामना करेंगे जब आप संग्रह को छोड़ना चाहते हैं। नीचे दिए गए परीक्षण और इसे ठीक करने का तरीका देखें। संग्रह '_TWII' का निर्माण 'लोगों के db' के तहत किया गया था।
> show collections
_TWII
employees
system.indexes
> db._TWII.drop()
2015-02-19T16:34:56.738-0800 TypeError: Cannot call method 'drop' of undefined
> use admin
switched to db admin
> db.runCommand({renameCollection:"people._TWII",to:"people.TWII"})
{ "ok" : 1 }
> use people
switched to db people
> show collections
TWII
employees
system.indexes
> db.TWII.drop()
true
> show collections
employees
system.indexes
>
'लोगों' डीबी के तहत _TWII संग्रह को हटाने के लिए एक शॉर्ट-कट:
> db.createCollection('^TWII')
{ "ok" : 1 }
> db.getCollection('^TWII').drop()
true
MongoDB में कुछ नामकरण परंपराएं हैं। उनमें से एक यह है कि डेटाबेस का नाम केस असंवेदनशील है। यदि निर्दिष्ट नहीं है, तो भी, मूंग आपके संग्रह नाम का बहुवचन होगा। "पाठ्यक्रम" "पाठ्यक्रम" बन जाएगा।
चूंकि डेटाबेस के नाम MongoDB में असंवेदनशील हैं, इसलिए डेटाबेस के नाम केवल वर्णों के मामले से भिन्न नहीं हो सकते।
उनकी वजह से, अपने सभी संग्रह को लोअरकेस में और विशेष पात्रों के बिना नाम देने का प्रयास करें। आप बहुत सी त्रुटि से बचेंगे - खासकर यदि आप Mongoose का उपयोग करते हैं। Mongoose में कुछ अजीब क्वेरी विशिष्टताएँ हैं।
उदाहरण के लिए, यदि आपके पास "पाठ्यक्रम" नाम का एक संग्रह है, तो यहां बताया गया है कि आपको अपने मॉडल की संरचना करने की आवश्यकता है:
const LawModel = mongoose.model(
"course",
new mongoose.Schema({
id: String,
name: String,
}),
ध्यान दें कि "पाठ्यक्रम" कैसे विलक्षण है? Mongoose इसे बहुवचन देगा इसलिए आप एक खाली सरणी "[]" देख सकते हैं। -> आप एक अस्पष्ट संग्रह को क्वेरी कर रहे हैं।
अपने मॉडल का नाम बदलने और समायोजित करने का प्रयास करें।