{"id":95148,"date":"2020-09-25T19:43:09","date_gmt":"2020-09-25T17:43:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb"},"modified":"2020-09-25T19:43:09","modified_gmt":"2020-09-25T17:43:09","slug":"14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","title":{"rendered":"14 cose che avrei voluto sapere prima di iniziare a lavorare con MongoDB","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>La traduzione dell'articolo \u00e8 stata preparata in vista dell'inizio del corso <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/ZRL1\/\">\u00abDatabase non relazionali\u00bb<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"14 cose che avrei voluto sapere prima di iniziare a lavorare con MongoDB\" src=\"\/wp-content\/uploads\/2020\/09\/9b4979be27e0090543b28150d90fa8df.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Punti principali:<\/p>\n<ul>\n<li>\u00c8 estremamente importante sviluppare uno schema nonostante in MongoDB sia facoltativo.<\/li>\n<li>Analogamente, gli indici dovrebbero corrispondere al tuo schema e ai modelli di accesso. <\/li>\n<li>Evita di utilizzare oggetti grandi e array molto ampi.<\/li>\n<li>Fai attenzione alle impostazioni di MongoDB, soprattutto quando si tratta di sicurezza e affidabilit\u00e0.<\/li>\n<li>In MongoDB non esiste un ottimizzatore di query, quindi devi fare attenzione quando esegui operazioni di query.<\/li>\n<\/ul>\n<p>\nLavoro da molto tempo con i database, ma ho scoperto MongoDB solo recentemente. Ci sono alcune cose che avrei voluto sapere prima di iniziare a lavorare con esso. Quando una persona ha gi\u00e0 esperienza in un certo campo, ha preconcetti su cosa siano i database e cosa facciano. Nella speranza di facilitare la comprensione ad altre persone, presento un elenco di errori comuni.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Creare un server MongoDB senza autenticazione<\/h3>\n<p>\nSfortunatamente, MongoDB viene installato senza autenticazione di default. Per una workstation a cui si accede localmente, questa pratica \u00e8 normale. Ma poich\u00e9 MongoDB \u00e8 un sistema multi-utente che tende a utilizzare grandi quantit\u00e0 di memoria, \u00e8 meglio installarlo su un server con la massima quantit\u00e0 possibile di RAM secondo le tue condizioni, anche se intendi utilizzarlo solo per lo sviluppo. L'installazione su un server tramite la porta di default pu\u00f2 presentare dei problemi, soprattutto se nella query pu\u00f2 essere eseguito qualsiasi codice JavaScript (ad esempio, <code>$where<\/code> come idea per <noindex><a rel=\"nofollow\" href=\"https:\/\/lockmedown.com\/securing-node-js-mongodb-security-injection-attacks\/\">iniezione<\/a><\/noindex>). <\/p>\n<p>Esistono diversi metodi di autenticazione, ma il pi\u00f9 semplice \u00e8 impostare un ID\/password per l'utente. Approfitta di questa idea mentre pensi a un'autenticazione pi\u00f9 elaborata basata su <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/security-ldap-external\/\">LDAP<\/a><\/noindex>. Parlando di sicurezza, MongoDB deve essere costantemente aggiornato e i log devono sempre essere controllati per rilevare accessi non autorizzati. A me, ad esempio, piace scegliere una porta diversa come porta predefinita.<\/p>\n<h3>Non dimenticare di legare la superficie di attacco a MongoDB<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/administration\/security-checklist\/\">Checklist di sicurezza per MongoDB<\/a><\/noindex> contiene buoni consigli per ridurre il rischio di intrusioni nella rete e perdite di dati. \u00c8 facile liquidare la questione e dire che un server per lo sviluppo non ha bisogno di un alto livello di sicurezza. Tuttavia, non \u00e8 cos\u00ec semplice e questo vale per tutti i server MongoDB. In particolare, se non c'\u00e8 una valida motivazione per utilizzare <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/command\/mapReduce\/#dbcmd.mapReduce\">mappaRiduci<\/a><\/noindex><\/code>, <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/command\/group\/#dbcmd.group\">gruppo<\/a><\/noindex><\/code> o <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/operator\/query\/where\/#op._S_where\">$where<\/a><\/noindex>, \u00e8 necessario disabilitare l'uso di codice JavaScript arbitrario scrivendo nel file di configurazione <code><noindex><a rel=\"nofollow\" href=\"https:\/\/lockmedown.com\/securing-node-js-mongodb-security-injection-attacks\/\">javascriptEnabled:false<\/a><\/noindex><\/code>. Poich\u00e9 in MongoDB standard i file di dati non sono crittografati, \u00e8 sensato eseguire MongoDB con <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/administration\/security-checklist\/#run-mongodb-with-a-dedicated-user\">Utente Dedicato<\/a><\/noindex>, che ha accesso completo ai file, con accesso limitato solo per lui e la possibilit\u00e0 di utilizzare strumenti di gestione dell'accesso ai file del sistema operativo.<\/p>\n<h3>Errore nella progettazione dello schema<\/h3>\n<p>\nMongoDB non utilizza uno schema. Ma ci\u00f2 non significa che uno schema non sia necessario. Se desideri semplicemente archiviare documenti senza uno schema coerente, puoi farlo in modo rapido e semplice, ma estrarli in seguito potrebbe risultare <noindex><a rel=\"nofollow\" href=\"https:\/\/www.compose.com\/articles\/mongodb-with-and-without-schemas\/\">incredibilmente difficile<\/a><\/noindex>. <\/p>\n<p>L'articolo classico \"<i><noindex><a rel=\"nofollow\" href=\"https:\/\/www.mongodb.com\/blog\/post\/6-rules-of-thumb-for-mongodb-schema-design-part-1\">6 regole empiriche per progettare schemi MongoDB\"<\/a><\/noindex><\/i> vale la pena leggerlo, e funzioni come <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/knowledge-base\/articles\/schema-explorer\/\">Schema Explorer<\/a><\/noindex> in uno strumento esterno come Studio 3T, dovrebbero essere utilizzate per controlli regolari sugli schemi.<\/p>\n<h3>Non dimenticare l'ordine di ordinamento<\/h3>\n<p>\nDimenticarsi dell'ordinamento pu\u00f2 causare le maggiori delusioni e farti perdere pi\u00f9 tempo rispetto a qualsiasi altra configurazione errata. Per impostazione predefinita, MongoDB utilizza <noindex><a rel=\"nofollow\" href=\"https:\/\/jira.mongodb.org\/browse\/SERVER-1920\">l'ordinamento binario<\/a><\/noindex>. Ma \u00e8 difficile che risulti utile. Le ordinazioni sensibili a maiuscole e minuscole, agli accenti e l'ordinamento binario sono stati considerati curiosi anacronismi insieme a perline, kaftani e baffi arricciati gi\u00e0 negli anni '80. Ora, il loro utilizzo \u00e8 imperdonabile. Nella vita reale, \"moto\" \u00e8 la stessa cosa di \"Moto\". E \"Britain\" e \"britain\" sono lo stesso posto. Una lettera minuscola \u00e8 semplicemente l'equivalente maiuscolo di una lettera maiuscola. E non farmi parlare dell'ordinamento dei segni diacritici. Quando crei un database in MongoDB, utilizza opzioni di ordinamento senza considerare gli accenti e <noindex><a rel=\"nofollow\" href=\"https:\/\/weblogs.sqlteam.com\/dang\/archive\/2009\/07\/26\/Collation-Hell-Part-1.aspx\">il maiuscolo<\/a><\/noindex>, che corrispondono alla lingua e <noindex><a rel=\"nofollow\" href=\"https:\/\/derickrethans.nl\/mongodb-collation-revised.html\">cultura degli utenti del sistema<\/a><\/noindex>. In questo modo semplificherai notevolmente la ricerca nei dati di tipo stringa.<\/p>\n<h3>Creazione di collezioni con documenti di grandi dimensioni<\/h3>\n<p>\nMongoDB \u00e8 felice di ospitare grandi documenti fino a 16 MB nelle collezioni, mentre <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/gridfs\/#gridfs\">GridFS<\/a><\/noindex> \u00e8 progettata per grandi documenti oltre 16 MB. Tuttavia, il semplice fatto che sia possibile caricare grandi documenti l\u00ec non significa che sia l'idea migliore conservarli in quel modo. MongoDB funzioner\u00e0 meglio se si salvano documenti separati di dimensioni nell'ordine di alcuni kilobyte, considerandoli pi\u00f9 come righe in una tabella SQL ampia. I grandi documenti possono causare problemi di <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/mongodb\/comments\/573fqr\/question_mongodb_terrible_performance_for_a\/\">prestazioni<\/a><\/noindex>.<\/p>\n<h3>La creazione di documenti con grandi array <\/h3>\n<p>\nI documenti possono contenere array. \u00c8 meglio se il numero di elementi nell'array sia lontano da un numero di quattro cifre. Se gli elementi vengono aggiunti frequentemente all'array, esso superer\u00e0 il documento che lo contiene e dovr\u00e0 essere <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.mongodb.org\/manual\/core\/data-model-operations\/#document-growth\">spostato<\/a><\/noindex>, il che significa che dovr\u00e0 essere <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.mongodb.org\/manual\/core\/write-performance\/#document-growth\">aggiornato e anche gli indici<\/a><\/noindex>. Durante la reindicizzazione di un documento con un grande array, gli indici vengono spesso sovrascritti, poich\u00e9 per ogni elemento esiste <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.mongodb.org\/manual\/core\/index-multikey\/\">una voce<\/a><\/noindex>, che conserva il suo indice. Questa reindicizzazione si verifica anche quando un documento viene inserito o rimosso. <\/p>\n<p>In MongoDB c'\u00e8 quello che viene chiamato <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/mmapv1\/#record-allocation-strategies\">\u00abtasso di riempimento\u00bb<\/a><\/noindex>, che offre spazio per la crescita dei documenti, per minimizzare questo problema. <br \/>\nSi potrebbe pensare di poter fare a meno della indicizzazione degli array. Sfortunatamente, a causa della mancanza di indici, potrebbero sorgere altri problemi. Poich\u00e9 i documenti vengono esaminati dall'inizio alla fine, la ricerca di elementi alla fine dell'array richieder\u00e0 pi\u00f9 tempo e molte delle operazioni collegate a un documento del genere saranno <noindex><a rel=\"nofollow\" href=\"http:\/\/grokbase.com\/t\/gg\/mongodb-user\/128r0h5gzw\/inserting-into-300-000-size-embedded-array-is-slow-even-w-o-indexes\">lente<\/a><\/noindex>. <\/p>\n<h3>Non dimenticate che l'ordine delle fasi nell'aggregazione \u00e8 importante<\/h3>\n<p>\nIn un sistema di database con ottimizzatore di query, le query che scrivete sono spiegazioni di ci\u00f2 che volete ottenere, non di come ottenerlo. Funziona come un ordine al ristorante: di solito ordini semplicemente un piatto, senza dare istruzioni dettagliate al cuoco.<\/p>\n<p>In MongoDB date istruzioni al cuoco. Ad esempio, \u00e8 importante assicurarsi che i dati passino attraverso <code>reduce<\/code> il prima possibile nella pipeline usando <code>$match<\/code> e <code>$project<\/code>, e la ordinazione avviene solo in seguito <code>reduce<\/code>, e che la ricerca avvenga esattamente nell'ordine necessario. Avere un ottimizzatore di query che elimina il lavoro superfluo, ordina in modo ottimale le fasi e seleziona il tipo di connessione pu\u00f2 viziarti. In MongoDB hai un maggiore controllo a scapito della comodit\u00e0.<\/p>\n<p>Strumenti come <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/\">Studio 3T<\/a><\/noindex> semplificheranno la costruzione di query di aggregazione in <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/knowledge-base\/articles\/build-mongodb-aggregation-queries\/\">MongoDB<\/a><\/noindex>. La funzione Aggregation Editor ti permetter\u00e0 di applicare gli operatori di pipeline uno stadio alla volta e di verificare i dati in ingresso e in uscita in ogni fase per semplificare il debug. <\/p>\n<h3>Uso della scrittura veloce<\/h3>\n<p>\nNon impostare mai in MongoDB parametri di scrittura ad alta velocit\u00e0 ma a bassa affidabilit\u00e0. Questa modalit\u00e0 <i>\"file-and-forget\"<\/i> sembra veloce, poich\u00e9 il comando restituisce prima che la scrittura sia completata. Se il sistema si arresta prima che i dati vengano scritti su disco, andranno persi e il sistema sar\u00e0 incoerente. Fortunatamente, in MongoDB a 64 bit \u00e8 abilitato il logging. <\/p>\n<p>I motori di archiviazione MMAPv1 e WiredTiger utilizzano il logging per prevenire questo, anche se WiredTiger pu\u00f2 ripristinarsi all'ultima <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/wiredtiger\/#storage-wiredtiger-checkpoints\">punto di controllo<\/a><\/noindex>, se il logging \u00e8 disabilitato.<\/p>\n<p>Il logging garantisce che il database sia in uno stato coerente dopo il ripristino e mantiene tutti i dati fino al momento della registrazione nel log. La frequenza delle scritture \u00e8 configurabile tramite il parametro <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/configuration-options\/#storage.journal.commitIntervalMs\">intervalloDiImpegnoMs<\/a><\/noindex><\/code>. <\/p>\n<p>Per essere sicuri delle scritture, assicurati che nel file di configurazione il logging sia abilitato <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/configuration-options\/#configuration-file\">(storage.journal.abilitato<\/a><\/noindex>)<\/code>, e che la frequenza delle scritture corrisponda a quanto vuoi permetterti di perdere.<\/p>\n<h3>Ordinamento senza indice<\/h3>\n<p>\nQuando cerchi e aggregati, spesso \u00e8 necessario ordinare i dati. Speriamo che questo venga fatto in una delle fasi finali, dopo aver filtrato il risultato per ridurre il volume dei dati ordinati. E anche in tal caso, avrai bisogno di un <noindex><a rel=\"nofollow\" href=\"https:\/\/studio3t.com\/knowledge-base\/articles\/mongodb-index-strategy\/\">indice<\/a><\/noindex>. Puoi utilizzare un indice singolo o composto. <\/p>\n<p>Se non esiste un indice appropriato, MongoDB potr\u00e0 farne a meno. Esiste un limite di memoria di 32 MB sulla dimensione totale di tutti i documenti in <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.org\/manual\/reference\/limits\/#Sort-Operations\">operazione di ordinamento<\/a><\/noindex>, e se MongoDB raggiunge questo limite, restituir\u00e0 un errore o un <noindex><a rel=\"nofollow\" href=\"https:\/\/www.sitepoint.com\/7-simple-speed-solutions-mongodb\/\">insieme di risultati vuoto<\/a><\/noindex>.<\/p>\n<h3>Ricerca senza supporto degli indici<\/h3>\n<p>\nLe query di ricerca svolgono una funzione analoga all'operazione JOIN in SQL. Per funzionare al meglio hanno bisogno di un indice del valore della chiave utilizzato come chiave esterna. Questo non \u00e8 ovvio, poich\u00e9 l'uso non \u00e8 riflesso in <code>explain()<\/code>. Questi indici sono un supplemento all'indice registrato in <code>explain()<\/code>, che a sua volta \u00e8 utilizzato dagli operatori di pipeline <code>$match<\/code> e <code>$sort<\/code>, quando questi si presentano all'inizio della pipeline. Gli indici ora possono coprire qualsiasi fase <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/core\/aggregation-pipeline\/#aggregation-pipeline-operators-and-performance\">della pipeline di aggregazione<\/a><\/noindex>. <\/p>\n<h3>La rinuncia all'uso delle multi-aggiornamenti<\/h3>\n<p>\nSanitizer.replaceElementWithChildren() <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.update\/\">db.collection.update()<\/a><\/noindex><\/code> \u00e8 utilizzata per modificare una parte di un documento esistente o un intero documento, fino a una sostituzione completa a seconda del parametro da te specificato <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.update\/#update-parameter\">aggiornamento<\/a><\/noindex><\/code>. Non \u00e8 cos\u00ec ovvio che non processer\u00e0 tutti i documenti nella collezione finch\u00e9 non imposti il parametro <code><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.update\/#multi-parameter\">multiplo<\/a><\/noindex><\/code> per aggiornare tutti i documenti che soddisfano i criteri della query.<\/p>\n<h3>Non dimenticare l'importanza dell'ordine delle chiavi nella tabella hash<\/h3>\n<p>\nIn JSON, un oggetto \u00e8 composto da una collezione non ordinata di zero o pi\u00f9 coppie nome\/valore, dove il nome \u00e8 una stringa e il valore pu\u00f2 essere una stringa, un numero, un valore booleano, zero, un oggetto o un array.<\/p>\n<p>Sfortunatamente, BSON attribuisce grande importanza all'ordine durante la ricerca. In MongoDB, l'ordine delle chiavi all'interno degli oggetti incorporati <noindex><a rel=\"nofollow\" href=\"http:\/\/devblog.me\/wtf-mongo\">ha importanza<\/a><\/noindex>, cio\u00e8. <code>{ firstname: \"Phil\", surname: \"factor\" }<\/code> \u2013 non \u00e8 la stessa cosa di <code>{ { surname: \"factor\", firstname: \"Phil\" }<\/code>. Quindi devi mantenere nei documenti l'ordine delle coppie nome\/valore se desideri essere certo di trovarle.<\/p>\n<h3>Non confondere <i>\"null\"<\/i> e <i>\"undefined\"<\/i><\/h3>\n<p>\nValore <i>\"undefined\"<\/i> non \u00e8 mai stato valido in JSON, secondo <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ecma-international.org\/publications\/files\/ECMA-ST\/ECMA-404.pdf\">lo standard ufficiale<\/a><\/noindex> JSON (ECMA-404, Sezione 5), nonostante venga utilizzato in JavaScript. Inoltre, per BSON \u00e8 deprecato e viene convertito in <code>$null<\/code>, il che non \u00e8 sempre una buona soluzione. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/meteor\/meteor\/issues\/1646#issuecomment-29682964\">Evita di usare <i>\"undefined\"<\/i> in MongoDB<\/a><\/noindex>.<\/p>\n<h3>Utilizzo <code>$limit()<\/code> senza <code>$sort()<\/code><\/h3>\n<p>\nMolto spesso, quando sviluppi in MongoDB, \u00e8 utile vedere semplicemente un campione del risultato che verr\u00e0 restituito dalla query o dall'aggregazione. Per questa attivit\u00e0 ti sar\u00e0 utile <code>$limit()<\/code>, ma non dovrebbe mai essere presente nella versione finale del codice, a meno che tu non lo utilizzi prima <code>$sort<\/code>. Questa meccanica \u00e8 necessaria, poich\u00e9 altrimenti non puoi garantire l'ordine dei risultati e non sarai in grado di visualizzare i dati in modo affidabile. Nella parte superiore del risultato riceverai diverse voci a seconda dell'ordinamento. Per un funzionamento affidabile, le query e le aggregazioni devono essere determinate, cio\u00e8 devono restituire risultati identici ad ogni esecuzione. Il codice che contiene <code>$limit()<\/code>, ma non contiene <code>$sort<\/code>, non sar\u00e0 deterministico e potrebbe successivamente causare errori che saranno difficili da rintracciare.<\/p>\n<h3>Conclusione<\/h3>\n<p>\nL'unico modo per rimanere delusi da MongoDB \u00e8 confrontarlo direttamente con un altro tipo di database, come un RDBMS, o avvicinarsi al suo utilizzo con particolari aspettative. \u00c8 come confrontare un'arancia con una forchetta. I sistemi di database mirano a obiettivi specifici. \u00c8 meglio semplicemente comprendere e valutare queste differenze. Sarebbe un peccato esercitare pressione sugli sviluppatori di MongoDB a causa del percorso che li ha costretti ad andare verso un RDBMS. Voglio vedere modi nuovi e interessanti per risolvere vecchi problemi come garantire l'integrit\u00e0 dei dati e creare sistemi di dati resilienti ai guasti e agli attacchi degli hacker.<\/p>\n<p>L'implementazione di transazionalit\u00e0 ACID in MongoDB nella versione 4.0 \u00e8 un buon esempio di implementazione di miglioramenti significativi in modo innovativo. Le transazioni multi-documento e multi-operatore sono ora atomiche. \u00c8 anche possibile regolare il tempo necessario per ottenere i blocchi e terminare le transazioni bloccate, oltre a modificare il livello di isolamento.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/ZRL1\/\"><img decoding=\"async\" alt=\"14 cose che avrei voluto sapere prima di iniziare a lavorare con MongoDB\" src=\"\/wp-content\/uploads\/2020\/09\/9966ff2613efab52aac99c2a0eda5c87.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h3>Leggi anche:<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/519340\/\">Come caricare dati in Google BigQuery<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/520412\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u041d\u0435\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b: \u041a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432 MongoDB \u043e\u043d\u0430 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0435\u0439 \u0441\u0445\u0435\u043c\u0435 \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0418\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432. \u0411\u0443\u0434\u044c\u0442\u0435 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 MongoDB, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u0438. \u0412 MongoDB [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95149,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95148","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u041d\u0435\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd4714 \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0437\u043d\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 MongoDB | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u041d\u0435\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-25T17:43:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-25T17:43:09+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd4714 cose che avrei voluto sapere prima di iniziare a lavorare con MongoDB | ProHoster","description":"La traduzione dell'articolo \u00e8 stata preparata in vista dell'inizio del corso 'Database non relazionali'.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd4714 \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0437\u043d\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 MongoDB | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u041d\u0435\u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/14-veshhej-kotorye-ya-hotel-by-znat-pered-nachalom-raboty-s-mongodb","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-25T17:43:09+00:00","article:modified_time":"2020-09-25T17:43:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95148","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:11:32","updated":"2022-10-03 07:39:33","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/95148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=95148"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/95148\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/95149"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=95148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=95148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=95148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}