{"id":47032,"date":"2022-11-08T09:01:02","date_gmt":"2022-11-08T09:01:02","guid":{"rendered":"https:\/\/kinqsta.com\/se\/?p=47032&#038;preview=true&#038;preview_id=47032"},"modified":"2023-06-28T12:24:25","modified_gmt":"2023-06-28T12:24:25","slug":"mongodb-skapa-databas","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/","title":{"rendered":"Hur man skapar en MongoDB-databas: 6 kritiska aspekter att k\u00e4nna till"},"content":{"rendered":"<p>Baserat p\u00e5 dina krav p\u00e5 din programvara s\u00e5 kan du prioritera flexibilitet, skalbarhet, prestanda eller snabbhet. Av den anledningen s\u00e5 blir utvecklare och f\u00f6retag ofta f\u00f6rvirrade n\u00e4r de ska v\u00e4lja en databas f\u00f6r sina behov. Om du beh\u00f6ver en databas som ger h\u00f6g flexibilitet och skalbarhet samt dataaggregering f\u00f6r kundanalys s\u00e5 kan MongoDB vara r\u00e4tt f\u00f6r dig!<\/p>\n\n<p>I den h\u00e4r artikeln s\u00e5 diskuterar vi MongoDB-databasens struktur och hur du skapar, \u00f6vervakar och hanterar din databas! L\u00e5t oss komma ig\u00e5ng.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Hur \u00e4r en MongoDB-databas uppbyggd?<\/h2>\n<p>MongoDB \u00e4r en schemal\u00f6s NoSQL-databas. Detta inneb\u00e4r att du inte anger en struktur f\u00f6r tabellerna\/databaserna som du g\u00f6r f\u00f6r SQL-databaser.<\/p>\n<p>Visste du att NoSQL-databaser faktiskt \u00e4r snabbare \u00e4n <a href=\"https:\/\/kinqsta.com\/blog\/mongodb-vs-mysql\/\">relationsdatabaser<\/a>? Detta beror p\u00e5 egenskaper som indexering, sharding och aggregeringspipelines. MongoDB \u00e4r k\u00e4nd f\u00f6r sitt snabba utf\u00f6rande av fr\u00e5gor. Det \u00e4r d\u00e4rf\u00f6r som den f\u00f6redras av f\u00f6retag som Google, Toyota och Forbes.<\/p>\n<p>Nedan ska vi utforska n\u00e5gra viktiga egenskaper hos MongoDB.<\/p>\n<h3>Dokument<\/h3>\n<p>MongoDB har en dokumentdatamodell som lagrar data som JSON-dokument. Dokumenten mappas naturligt till objekten i applikationskoden, vilket g\u00f6r det enklare f\u00f6r utvecklare att anv\u00e4nda dem.<\/p>\n<p>I en tabell i en relationsdatabas s\u00e5 m\u00e5ste du l\u00e4gga till en kolumn f\u00f6r att l\u00e4gga till ett nytt f\u00e4lt. S\u00e5 \u00e4r inte fallet med f\u00e4lt i ett JSON-dokument. F\u00e4lt i ett JSON-dokument kan skilja sig fr\u00e5n dokument till dokument, s\u00e5 de kommer inte att l\u00e4ggas till i varje post i databasen.<\/p>\n<p>Dokument kan lagra strukturer som matriser som kan vara inb\u00e4ddade f\u00f6r att uttrycka hierarkiska relationer. MongoDB konverterar dessutom dokument till en bin\u00e4r JSON-typ (BSON). Detta s\u00e4kerst\u00e4ller en snabbare \u00e5tkomst och \u00f6kat st\u00f6d f\u00f6r olika datatyper som str\u00e4ng, heltal, boolska tal och mycket mer!<\/p>\n<h3>Replikupps\u00e4ttningar<\/h3>\n<p>N\u00e4r du skapar en ny databas i MongoDB s\u00e5 skapar systemet automatiskt minst tv\u00e5 ytterligare kopior av dina data. Dessa kopior kallas &#8221;replikor&#8221; och de replikerar kontinuerligt data mellan dem, vilket s\u00e4kerst\u00e4ller en f\u00f6rb\u00e4ttrad tillg\u00e4nglighet f\u00f6r dina data. De erbjuder \u00e4ven skydd mot driftstopp vid systemfel eller planerat underh\u00e5ll.<\/p>\n<h3>Samlingar<\/h3>\n<p>En samling \u00e4r en grupp dokument som \u00e4r kopplade till en databas. De liknar tabeller i relationsdatabaser.<\/p>\n<p>Samlingar \u00e4r dock mycket mer flexibla. F\u00f6r det f\u00f6rsta s\u00e5 \u00e4r de inte beroende av ett schema. F\u00f6r det andra s\u00e5 beh\u00f6ver dokumenten inte vara av samma datatyp!<\/p>\n<p>Om du vill visa en lista \u00f6ver de samlingar som h\u00f6r till en databas s\u00e5 anv\u00e4nder du kommandot <code>listCollections<\/code>.<\/p>\n<h3>Aggregeringspipelines<\/h3>\n<p>Du kan anv\u00e4nda det h\u00e4r ramverket f\u00f6r att f\u00e5nga in flera operat\u00f6rer och uttryck. Det \u00e4r flexibelt eftersom det g\u00f6r det m\u00f6jligt att bearbeta, omvandla och analysera data av vilken struktur som helst.<\/p>\n<p>Tack vare detta s\u00e5 till\u00e5ter MongoDB snabba datafl\u00f6den och funktioner \u00f6ver 150 operat\u00f6rer och uttryck. Den har \u00e4ven flera steg, som unionssteget, som flexibelt s\u00e4tter ihop resultat fr\u00e5n flera samlingar.<\/p>\n<h3>Index<\/h3>\n<p>Du kan indexera alla f\u00e4lt i ett MongoDB-dokument f\u00f6r att \u00f6ka effektiviteten och f\u00f6rb\u00e4ttra s\u00f6khastigheten. Indexering sparar tid genom att indexet skannas f\u00f6r att begr\u00e4nsa de dokument som inspekteras. Visst \u00e4r detta mycket b\u00e4ttre \u00e4n att l\u00e4sa varje dokument i samlingen?<\/p>\n<p>Du kan anv\u00e4nda olika indexeringsstrategier, inklusive sammansatta index p\u00e5 flera f\u00e4lt. S\u00e4g exempelvis att du har flera dokument som inneh\u00e5ller den anst\u00e4lldes f\u00f6r- och efternamn i separata f\u00e4lt. Om du vill att f\u00f6r- och efternamn ska returneras s\u00e5 kan du skapa ett index som b\u00e5de inneh\u00e5ller &#8221;Efternamn&#8221; och &#8221;F\u00f6rnamn&#8221;. Detta \u00e4r mycket b\u00e4ttre \u00e4n att ha ett index f\u00f6r &#8221;efternamn&#8221; och ett annat f\u00f6r &#8221;f\u00f6rnamn&#8221;.<\/p>\n<p>Du kan anv\u00e4nda verktyg som Performance Advisor f\u00f6r att ytterligare f\u00f6rst\u00e5 vilka fr\u00e5gor som kan dra nytta av index.<\/p>\n<h3>Delning av<\/h3>\n<p>Sharding distribuerar en enda datam\u00e4ngd \u00f6ver flera databaser. Datam\u00e4ngden kan sedan lagras p\u00e5 flera maskiner f\u00f6r att \u00f6ka den totala lagringskapaciteten i ett system. Detta beror p\u00e5 att st\u00f6rre datam\u00e4ngder delas upp i mindre delar och lagras i olika datanoder.<\/p>\n<p>MongoDB delar upp data p\u00e5 samlingsniv\u00e5 och distribuerar dokumenten i en samling \u00f6ver alla delar i ett kluster. Detta s\u00e4kerst\u00e4ller skalbarhet genom att arkitekturen kan hantera de st\u00f6rsta applikationerna.<\/p>\n<h2>S\u00e5 h\u00e4r skapar du en MongoDB-databas<\/h2>\n<p>Du m\u00e5ste f\u00f6rst installera r\u00e4tt MongoDB-paket som \u00e4r l\u00e4mpligt f\u00f6r ditt operativsystem. G\u00e5 till sidan <a href=\"https:\/\/www.mongodb.com\/try\/download\/community\">&#8221;Ladda ner MongoDB Community Server<\/a>&#8221;. Bland de tillg\u00e4ngliga alternativen s\u00e5 v\u00e4ljer du den senaste &#8221;versionen&#8221;, &#8221;paketformatet&#8221; som zip-fil och &#8221;plattformen&#8221; som ditt operativsystem och klickar p\u00e5 &#8221;Ladda ner&#8221; enligt bilden nedan:<\/p>\n<figure id=\"attachment_134838\" aria-describedby=\"caption-attachment-134838\" style=\"width: 594px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134838 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/MongoDB-Community-Server-Download-Process-1.png\" alt=\"Den h\u00e4r bilden visar de tillg\u00e4ngliga alternativen- Version, Plattform och Paket n\u00e4r du laddar ner MongoDB Community Server.\" width=\"594\" height=\"814\"><figcaption id=\"caption-attachment-134838\" class=\"wp-caption-text\">H\u00e4mtningsprocessen f\u00f6r MongoDB Community Server. (Bildk\u00e4lla: <a href=\"https:\/\/www.mongodb.com\/try\/download\/community2\">MongoDB Community Server<\/a>)<\/figcaption><\/figure>\n<p>Processen \u00e4r ganska okomplicerad, s\u00e5 du kommer att ha MongoDB installerat i ditt system p\u00e5 nolltid!<\/p>\n<p>N\u00e4r du har gjort installationen s\u00e5 \u00f6ppnar du din kommandotolk och skriver in <code>mongod -version<\/code> f\u00f6r att verifiera den. Om du inte f\u00e5r f\u00f6ljande utdata utan ist\u00e4llet ser en rad fel s\u00e5 kan du beh\u00f6va installera om den:<\/p>\n<figure id=\"attachment_134839\" aria-describedby=\"caption-attachment-134839\" style=\"width: 507px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134839 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Verifying-MongoDB-Version.png\" alt=\"Detta \u00e4r ett kodavsnitt f\u00f6r att kontrollera MongoDB-versionen efter installationen.\" width=\"507\" height=\"287\"><figcaption id=\"caption-attachment-134839\" class=\"wp-caption-text\">Verifierar MongoDB-versionen. (Bildk\u00e4lla: <a href=\"https:\/\/www.configserverfirewall.com\/mongodb\/check-mongodb-version\/\">configserverfirewall<\/a>)<\/figcaption><\/figure>\n<h3>Anv\u00e4nda MongoDB Shell<\/h3>\n<p>Innan vi b\u00f6rjar s\u00e5 ska du se till att:<\/p>\n<ul>\n<li>Din klient har Transport Layer Security och finns p\u00e5 din <a href=\"https:\/\/docs.atlas.mongodb.com\/security\/ip-access-list\/\">IP-lista<\/a>.<\/li>\n<li>Du har ett anv\u00e4ndarkonto och l\u00f6senord p\u00e5 det \u00f6nskade MongoDB-klustret.<\/li>\n<li>Du har installerat MongoDB p\u00e5 din enhet.<\/li>\n<\/ul>\n<h4>Steg 1: \u00c5tkomst till MongoDB Shell<\/h4>\n<p>Starta MongoDB-servern genom att f\u00f6lja instruktionerna f\u00f6r varje operativsystem. F\u00f6r Windows, skriv f\u00f6ljande kommando. F\u00f6r andra operativsystem, se MongoDB-dokumentationen.<\/p>\n<pre><code class=\"language-markdown\">net start MongoDB<\/code><\/pre>\n<p>Detta b\u00f6r ge f\u00f6ljande resultat:<\/p>\n<figure id=\"attachment_134840\" aria-describedby=\"caption-attachment-134840\" style=\"width: 512px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134840 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/MongoDB-Server-Initialization.png\" alt=\"K\u00f6r MongoDB-server (Bildk\u00e4lla: c-sharpcorner)\" width=\"512\" height=\"179\"><figcaption id=\"caption-attachment-134840\" class=\"wp-caption-text\">K\u00f6r MongoDB-server (Bildk\u00e4lla: c-sharpcorner)<\/figcaption><\/figure>\n<p>Det f\u00f6reg\u00e5ende kommandot initialiserade MongoDB-servern. F\u00f6r att k\u00f6ra det s\u00e5 m\u00e5ste vi skriva in <code>mongo<\/code> i kommandotolken.<\/p>\n<figure id=\"attachment_134843\" aria-describedby=\"caption-attachment-134843\" style=\"width: 897px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134843 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Running-MongoDB-Server-2.png\" alt=\"K\u00f6r MongoDB-skal. (Bildk\u00e4lla: bmc)\" width=\"897\" height=\"343\"><figcaption id=\"caption-attachment-134843\" class=\"wp-caption-text\">K\u00f6r MongoDB-skal. (Bildk\u00e4lla: bmc)<\/figcaption><\/figure>\n<p>H\u00e4r i MongoDB Shell s\u00e5 kan vi utf\u00f6ra kommandon f\u00f6r att skapa databaser, infoga data, redigera data, utf\u00e4rda administrativa kommandon och radera data.<\/p>\n<h4>Steg 2: Skapa din databas<\/h4>\n<p>Till skillnad fr\u00e5n vanliga relationsdatabaser har MongoDB inget kommando f\u00f6r att skapa databas. Det finns ist\u00e4llet ett nyckelord som heter <code>use<\/code> som v\u00e4xlar till en angiven databas. Om databasen inte finns s\u00e5 kommer det att skapas en ny databas, annars kommer det att l\u00e4nkas till den befintliga databasen.<\/p>\n<p>F\u00f6r att starta en databas som heter &#8221;company&#8221; skriver du exempelvis:<\/p>\n<pre><code class=\"language-markdown\">use Company<\/code><\/pre>\n<figure id=\"attachment_134845\" aria-describedby=\"caption-attachment-134845\" style=\"width: 1378px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134845 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Creating-Database-in-MongoDB-1.png\" alt=\"Skapa en databas i MongoDB.\" width=\"1378\" height=\"547\"><figcaption id=\"caption-attachment-134845\" class=\"wp-caption-text\">Skapa en databas i MongoDB.<\/figcaption><\/figure>\n<p>Du kan skriva in <code>db<\/code> f\u00f6r att bekr\u00e4fta den databas som du just skapat i ditt system. Om den nya databasen som du skapade dyker upp s\u00e5 har du lyckats ansluta till den.<\/p>\n<p>Om du vill kontrollera de befintliga databaserna s\u00e5 skriver du <code>show dbs<\/code> och f\u00e5r fram alla databaser i ditt system:<\/p>\n<figure id=\"attachment_134847\" aria-describedby=\"caption-attachment-134847\" style=\"width: 1369px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134847 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Show-Databases-in-MongoDB-1.png\" alt=\"Visar databaser i MongoDB.\" width=\"1369\" height=\"489\"><figcaption id=\"caption-attachment-134847\" class=\"wp-caption-text\">Visar databaser i MongoDB.<\/figcaption><\/figure>\n<p>Som standard s\u00e5 skapar installationen av MongoDB databaserna admin, config och local.<\/p>\n<p>M\u00e4rkte du att databasen som vi skapade inte visas? Detta beror p\u00e5 att vi \u00e4nnu inte har sparat v\u00e4rden i databasen! Vi kommer att diskutera ins\u00e4ttning under avsnittet om databashantering.<\/p>\n<h3>Anv\u00e4ndning av Atlas UI<\/h3>\n<p>Du kan \u00e4ven komma ig\u00e5ng med MongoDB: s databastj\u00e4nst Atlas. \u00c4ven om du kan beh\u00f6va betala f\u00f6r att f\u00e5 tillg\u00e5ng till vissa funktioner i Atlas, s\u00e5 \u00e4r de flesta databasfunktionerna tillg\u00e4ngliga i den kostnadsfria varianten. Funktionerna i den kostnadsfria varianten \u00e4r mer \u00e4n tillr\u00e4ckliga f\u00f6r att skapa en MongoDB-databas.<\/p>\n<p>Innan vi b\u00f6rjar s\u00e5 ska du se till att:<\/p>\n<ol>\n<li>Din IP finns med p\u00e5 listan \u00f6ver till\u00e5tna enheter.<\/li>\n<li>Du har ett anv\u00e4ndarkonto och l\u00f6senord p\u00e5 det MongoDB-kluster som du vill anv\u00e4nda.<\/li>\n<\/ol>\n<p>F\u00f6r att skapa en MongoDB-databas med AtlasUI s\u00e5 \u00f6ppnar du ett webbl\u00e4sarf\u00f6nster och loggar in p\u00e5 <a href=\"https:\/\/cloud.mongodb.com\/\">https:\/\/cloud.mongodb.com<\/a>. P\u00e5 din klustersida s\u00e5 klickar du p\u00e5 <strong>Bl\u00e4ddra bland samlingar<\/strong>. Om det inte finns n\u00e5gra databaser i klustret s\u00e5 kan du skapa din databas genom att klicka p\u00e5 knappen <strong>L\u00e4gg till min egen data<\/strong>.<\/p>\n<p>Du kommer att uppmanas att ange ett databas- och samlingsnamn. N\u00e4r du har namngett dem s\u00e5 klickar du p\u00e5 <strong>Skapa<\/strong> och sen \u00e4r du klar! Du kan nu ange nya dokument eller ansluta till databasen med hj\u00e4lp av drivrutiner.<\/p>\n<h2>Hantering av din MongoDB-databas<\/h2>\n<p>I det h\u00e4r avsnittet s\u00e5 g\u00e5r vi igenom n\u00e5gra smarta s\u00e4tt att hantera din MongoDB-databas p\u00e5 ett effektivt s\u00e4tt. Du kan g\u00f6ra detta antingen genom att anv\u00e4nda MongoDB-kompassen eller genom samlingar.<\/p>\n<h3>Anv\u00e4ndning av samlingar<\/h3>\n<p>Medan relationsdatabaser har v\u00e4ldefinierade tabeller med specificerade datatyper och kolumner s\u00e5 har NoSQL samlingar ist\u00e4llet f\u00f6r tabeller. Dessa samlingar har ingen struktur och dokumenten kan variera &#8211; du kan ha olika datatyper och f\u00e4lt utan att beh\u00f6va matcha ett annat dokuments format i samma samling.<\/p>\n<p>F\u00f6r att demonstrera detta s\u00e5 skapar vi en samling som heter &#8221;Employee&#8221; och l\u00e4gger till ett dokument i den:<\/p>\n<pre><code class=\"language-markdown\">db.Employee.insert(\n  {\n   \t\"Employeename\" : \"Chris\",\n   \t\"EmployeeDepartment\" : \"Sales\"\n  }\n)<\/code><\/pre>\n<p>Om ins\u00e4ttningen \u00e4r framg\u00e5ngsrik s\u00e5 kommer <code>WriteResult({ \"nInserted\" : 1 })<\/code> att returneras:<\/p>\n<figure id=\"attachment_134848\" aria-describedby=\"caption-attachment-134848\" style=\"width: 1366px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134848 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Successful-Insertion-in-MongoDB.png\" alt=\"Framg\u00e5ngsrik ins\u00e4ttning i MongoDB.\" width=\"1366\" height=\"484\"><figcaption id=\"caption-attachment-134848\" class=\"wp-caption-text\">Framg\u00e5ngsrik ins\u00e4ttning i MongoDB.<\/figcaption><\/figure>\n<p>H\u00e4r h\u00e4nvisar &#8221;db&#8221; till den f\u00f6r n\u00e4rvarande anslutna databasen. &#8221;Employee&#8221; \u00e4r den nyligen skapade samlingen i f\u00f6retagsdatabasen.<\/p>\n<p>Vi har inte st\u00e4llt in n\u00e5gon prim\u00e4rnyckel h\u00e4r eftersom MongoDB automatiskt skapar ett prim\u00e4rnyckelf\u00e4lt som heter &#8221;_id&#8221; och st\u00e4ller in ett standardv\u00e4rde f\u00f6r detta.<\/p>\n<p>K\u00f6r nedanst\u00e5ende kommando f\u00f6r att kolla upp samlingen i JSON-format:<\/p>\n<pre><code class=\"language-markdown\">db.Employee.find().forEach(printjson)<\/code><\/pre>\n<p>Utmatning:<\/p>\n<pre><code class=\"language-markdown\">{\n  \"_id\" : ObjectId(\"63151427a4dd187757d135b8\"),\n  \"Employeename\" : \"Chris\",\n  \"EmployeeDepartment\" : \"Sales\"\n}<\/code><\/pre>\n<p>Du kan \u00e4ndra v\u00e4rdet p\u00e5 standardprim\u00e4rnyckeln, \u00e4ven om v\u00e4rdet &#8221;_id&#8221; tilldelas automatiskt. Den h\u00e4r g\u00e5ngen s\u00e5 infogar vi ett annat dokument i databasen &#8221;Employee&#8221; med v\u00e4rdet &#8221;_id&#8221; som &#8221;1&#8221;:<\/p>\n<pre><code class=\"language-markdown\">db.Employee.insert(\n  {  \n   \t\"_id\" : 1,\n   \t\"EmployeeName\" : \"Ava\",\n   \t\"EmployeeDepartment\" : \"Public Relations\"\n  }\n)<\/code><\/pre>\n<p>N\u00e4r vi k\u00f6r kommandot <code>db.Employee.find().forEach(printjson)<\/code> s\u00e5 f\u00e5r vi f\u00f6ljande resultat:<\/p>\n<figure id=\"attachment_134851\" aria-describedby=\"caption-attachment-134851\" style=\"width: 1764px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134851 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/Primary-Key-for-Documents-in-Collection-1.png\" alt=\"Dokument i samlingen med deras prim\u00e4ra nyckel.\" width=\"1764\" height=\"694\"><figcaption id=\"caption-attachment-134851\" class=\"wp-caption-text\">Dokument i samlingen med deras prim\u00e4ra nyckel.<\/figcaption><\/figure>\n<p>I ovanst\u00e5ende utdata s\u00e5 s\u00e4tts v\u00e4rdet &#8221;_id&#8221; f\u00f6r &#8221;Ava&#8221; till &#8221;1&#8221; i st\u00e4llet f\u00f6r att det tilldelas ett v\u00e4rde automatiskt.<\/p>\n<p>Nu n\u00e4r vi har lyckats l\u00e4gga till v\u00e4rden i databasen s\u00e5 kan vi kontrollera om den dyker upp under de befintliga databaserna i v\u00e5rt system med hj\u00e4lp av f\u00f6ljande kommando:<\/p>\n<pre><code class=\"language-markdown\">show dbs<\/code><\/pre>\n<figure id=\"attachment_134852\" aria-describedby=\"caption-attachment-134852\" style=\"width: 1714px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134852 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/List-of-Databases.png\" alt=\"Visar listan \u00f6ver databaser.\" width=\"1714\" height=\"460\"><figcaption id=\"caption-attachment-134852\" class=\"wp-caption-text\">Visar listan \u00f6ver databaser.<\/figcaption><\/figure>\n<p>Och voila! Du har framg\u00e5ngsrikt skapat en databas i ditt system!<\/p>\n<h3>Anv\u00e4ndning av MongoDB-kompassen<\/h3>\n<p>\u00c4ven om vi kan arbeta med MongoDB-servrar fr\u00e5n Mongo Shell s\u00e5 kan det ibland vara tr\u00e5kigt. Du kan uppleva detta i en produktionsmilj\u00f6.<\/p>\n<p>Det finns dock ett kompassverktyg (med det passande namnet Compass) som har skapats av MongoDB och som kan g\u00f6ra det enklare. Det har ett b\u00e4ttre GUI och har lagt till funktioner som datavisualisering, prestandaprofilering och CRUD-\u00e5tkomst (skapa, l\u00e4sa, uppdatera, ta bort) till data, databaser och samlingar.<\/p>\n<p>Du kan ladda ner <a href=\"https:\/\/www.mongodb.com\/docs\/compass\/current\/install\/\">Compass IDE<\/a> f\u00f6r ditt operativsystem och installera det med dess enkla process.<\/p>\n<p>\u00d6ppna sedan programmet och skapa en anslutning till servern genom att klistra in anslutningsstr\u00e4ngen. Om du inte kan hitta den s\u00e5 kan du klicka p\u00e5 <strong>Fyll i anslutningsf\u00e4lt individuellt<\/strong>. Om du inte \u00e4ndrade portnumret n\u00e4r du installerade MongoDB s\u00e5 \u00e4r det bara att klicka p\u00e5 anslutningsknappen, s\u00e5 \u00e4r du inne! I annat fall s\u00e5 anger du bara de v\u00e4rden som du st\u00e4llde in och klickar p\u00e5 <strong>Anslut<\/strong>.<\/p>\n<figure id=\"attachment_134854\" aria-describedby=\"caption-attachment-134854\" style=\"width: 1384px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-134854 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2022\/10\/New-Connection-Window-in-MongoDB-1.png\" alt=\"F\u00f6nstret Ny anslutning i MongoDB.. (Bildk\u00e4lla: mongodb)\" width=\"1384\" height=\"535\"><figcaption id=\"caption-attachment-134854\" class=\"wp-caption-text\">F\u00f6nstret Ny anslutning i MongoDB. (Bildk\u00e4lla: <a href=\"https:\/\/www.mongodb.com\/docs\/compass\/current\/connect\/\">mongodb<\/a>)<\/figcaption><\/figure>\n<p>Ange sedan hostnamn, port och autentisering i f\u00f6nstret Ny anslutning.<\/p>\n<p>I MongoDB Compass s\u00e5 kan du skapa en databas och l\u00e4gga till dess f\u00f6rsta samling p\u00e5 samma g\u00e5ng. S\u00e5 h\u00e4r g\u00f6r du:<\/p>\n<ol>\n<li>Klicka p\u00e5 <strong>Skapa databas<\/strong> f\u00f6r att \u00f6ppna prompten.<\/li>\n<li>Ange namnet p\u00e5 databasen och dess f\u00f6rsta samling.<\/li>\n<li>Klicka p\u00e5 <strong>Skapa en databas<\/strong>.<\/li>\n<\/ol>\n<p>Du kan l\u00e4gga in fler dokument i din databas genom att klicka p\u00e5 databasens namn och sedan klicka p\u00e5 samlingens namn f\u00f6r att se fliken <strong>Dokument<\/strong>. Du kan sedan klicka p\u00e5 knappen <strong>L\u00e4gg till data<\/strong> f\u00f6r att l\u00e4gga in ett eller flera dokument i samlingen.<\/p>\n<p>N\u00e4r du l\u00e4gger till dina dokument s\u00e5 kan du ange dem ett i taget eller som flera dokument i en matris. Om du l\u00e4gger till flera dokument s\u00e5 ska du se till att dessa kommaseparerade dokument omsluts av hakparenteser. exempelvis:<\/p>\n<pre><code class=\"language-markdown\">{ _id: 1, item: { name: \"apple\", code: \"123\" }, qty: 15, tags: [ \"A\", \"B\", \"C\" ] },\n{ _id: 2, item: { name: \"banana\", code: \"123\" }, qty: 20, tags: [ \"B\" ] },\n{ _id: 3, item: { name: \"spinach\", code: \"456\" }, qty: 25, tags: [ \"A\", \"B\" ] },\n{ _id: 4, item: { name: \"lentils\", code: \"456\" }, qty: 30, tags: [ \"B\", \"A\" ] },\n{ _id: 5, item: { name: \"pears\", code: \"000\" }, qty: 20, tags: [ [ \"A\", \"B\" ], \"C\" ] },\n{ _id: 6, item: { name: \"strawberry\", code: \"123\" }, tags: [ \"B\" ] }<\/code><\/pre>\n<p>Klicka slutligen p\u00e5 <strong>Infoga<\/strong> f\u00f6r att l\u00e4gga till dokumenten i samlingen. S\u00e5 h\u00e4r kan ett dokument se ut:<\/p>\n<pre><code class=\"language-markdown\">{\n  \"StudentID\" : 1\n  \"StudentName\" : \"JohnDoe\"\n}<\/code><\/pre>\n<p>H\u00e4r \u00e4r f\u00e4ltnamnen &#8221;StudentID&#8221; och &#8221;StudentName&#8221;. F\u00e4ltv\u00e4rdena \u00e4r &#8221;1&#8221; respektive &#8221;JohnDoe&#8221;.<\/p>\n<h3>Anv\u00e4ndbara kommandon<\/h3>\n<p>Du kan hantera dessa samlingar med hj\u00e4lp av kommandon f\u00f6r rollhantering och anv\u00e4ndarhantering.<\/p>\n<h4>Kommandon f\u00f6r anv\u00e4ndarhantering<\/h4>\n<p>MongoDB:s anv\u00e4ndarhanteringskommandon inkluderar kommandon som g\u00e4ller anv\u00e4ndaren. Vi kan skapa, uppdatera och ta bort anv\u00e4ndarna med hj\u00e4lp av dessa kommandon.<\/p>\n<h5>dropUser<\/h5>\n<p>Det h\u00e4r kommandot tar bort en enskild anv\u00e4ndare fr\u00e5n den angivna databasen. Nedan f\u00f6ljer syntaxen:<\/p>\n<pre><code class=\"language-markdown\">db.dropUser(username, writeConcern)<\/code><\/pre>\n<p>H\u00e4r \u00e4r <code>username<\/code> ett obligatoriskt f\u00e4lt som anger namnet p\u00e5 anv\u00e4ndaren som ska tas bort fr\u00e5n databasen. Det valfria f\u00e4ltet <code>writeConcern<\/code> inneh\u00e5ller niv\u00e5n av skrivproblem f\u00f6r borttagningsoperationen. Niv\u00e5n p\u00e5 skrivproblem kan best\u00e4mmas av det valfria f\u00e4ltet <code>writeConcern<\/code>.<\/p>\n<p>Innan du tar bort en anv\u00e4ndare som har rollen <code>userAdminAnyDatabase<\/code> s\u00e5 ska du se till att det finns minst en annan anv\u00e4ndare som har anv\u00e4ndaradministrationsr\u00e4ttigheter.<\/p>\n<p>I det h\u00e4r exemplet s\u00e5 tar vi bort anv\u00e4ndaren &#8221;user26&#8221; i testdatabasen:<\/p>\n<pre><code class=\"language-markdown\">use test\ndb.dropUser(\"user26\", {w: \"majority\", wtimeout: 4000})<\/code><\/pre>\n<p>Utmatning:<\/p>\n<pre><code class=\"language-markdown\">&gt; db.dropUser(\"user26\", {w: \"majority\", wtimeout: 4000});\ntrue<\/code><\/pre>\n<h5>createUser<\/h5>\n<p>Detta kommando skapar en ny anv\u00e4ndare f\u00f6r den angivna databasen enligt f\u00f6ljande:<\/p>\n<pre><code class=\"language-markdown\">db.createUser(user, writeConcern)<\/code><\/pre>\n<p>H\u00e4r \u00e4r <code>user<\/code> ett obligatoriskt f\u00e4lt som innefattar dokumentet med autentiserings- och \u00e5tkomstinformation om den anv\u00e4ndare som ska skapas. Det valfria f\u00e4ltet <code>writeConcern<\/code> innefattar niv\u00e5n f\u00f6r skrivskydd f\u00f6r skapandet. Niv\u00e5n p\u00e5 skrivbeh\u00f6righeten kan best\u00e4mmas av det valfria f\u00e4ltet <code>writeConcern<\/code>.<\/p>\n<p><code>createUser<\/code> ger ett felmeddelande om dubbla anv\u00e4ndare om anv\u00e4ndaren redan finns i databasen.<\/p>\n<p>Du kan skapa en ny anv\u00e4ndare i testdatabasen p\u00e5 f\u00f6ljande s\u00e4tt:<\/p>\n<pre><code class=\"language-markdown\">use test\ndb.createUser(\n  {\n    user: \"user26\",\n    pwd: \"myuser123\",\n    roles: [ \"readWrite\" ]  \n  }\n);<\/code><\/pre>\n<p>Utmatningen ser ut p\u00e5 f\u00f6ljande s\u00e4tt:<\/p>\n<pre><code class=\"language-markdown\">Successfully added user: { \"user\" : \"user26\", \"roles\" : [ \"readWrite\", \"dbAdmin\" ] }<\/code><\/pre>\n<h5>grantRolesToUser<\/h5>\n<p>Du kan anv\u00e4nda det h\u00e4r kommandot f\u00f6r att bevilja ytterligare roller till en anv\u00e4ndare. Om du vill anv\u00e4nda det s\u00e5 m\u00e5ste du t\u00e4nka p\u00e5 f\u00f6ljande syntax:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    grantRolesToUser: \"&lt;user&gt;\",\n    roles: [ &lt;roles&gt; ],\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Du kan b\u00e5de ange anv\u00e4ndardefinierade och inbyggda roller i de roller som n\u00e4mns ovan. Om du vill ange en roll som finns i samma databas som <code>grantRolesToUser<\/code> s\u00e5 kan du antingen ange rollen med ett dokument, enligt nedan:<\/p>\n<pre><code class=\"language-markdown\">{ role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" }<\/code><\/pre>\n<p>Eller s\u00e5 kan du ange rollen med rollens namn. exempelvis:<\/p>\n<pre><code class=\"language-markdown\">\"readWrite\"<\/code><\/pre>\n<p>Om du vill ange en roll som finns i en annan databas s\u00e5 m\u00e5ste du ange rollen med ett annat dokument.<\/p>\n<p>Om du vill bevilja en roll i en databas s\u00e5 beh\u00f6ver du \u00e5tg\u00e4rden <code>grantRole<\/code> i den angivna databasen.<\/p>\n<p>H\u00e4r \u00e4r ett exempel f\u00f6r att ge dig en tydlig bild. Ta exempelvis anv\u00e4ndaren productUser00 i produktdatabasen med f\u00f6ljande roller:<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"assetsWriter\",\n    \"db\" : \"assets\"\n  }\n]<\/code><\/pre>\n<p>Operationen <code>grantRolesToUser<\/code> ger &#8221;productUser00&#8221; rollen <code>readWrite<\/code> i lagerdatabasen och l\u00e4srollen i produktdatabasen:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand({\n  grantRolesToUser: \"productUser00\",\n  roles: [\n    { role: \"readWrite\", db: \"stock\"},\n    \"read\"\n  ],\n  writeConcern: { w: \"majority\" , wtimeout: 2000 }\n})<\/code><\/pre>\n<p>Anv\u00e4ndaren productUser00 i produktdatabasen har nu f\u00f6ljande roller:<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"assetsWriter\",\n    \"db\" : \"assets\"\n  },\n  {\n    \"role\" : \"readWrite\",\n    \"db\" : \"stock\"\n  },\n  {\n    \"role\" : \"read\",\n    \"db\" : \"products\"\n  }\n]<\/code><\/pre>\n<h5>usersInfo<\/h5>\n<p>Du kan anv\u00e4nda kommandot <code>usersInfo<\/code> f\u00f6r att f\u00e5 tillbaka information om en eller flera anv\u00e4ndare. H\u00e4r \u00e4r syntaxen:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    usersInfo: &lt;various&gt;,\n    showCredentials: &lt;Boolean&gt;,\n    showCustomData: &lt;Boolean&gt;,\n    showPrivileges: &lt;Boolean&gt;,\n    showAuthenticationRestrictions: &lt;Boolean&gt;,\n    filter: &lt;document&gt;,\n    comment: &lt;any&gt; \n  }\n)\n{ usersInfo: &lt;various&gt; }<\/code><\/pre>\n<p>N\u00e4r det g\u00e4ller \u00e5tkomst s\u00e5 kan anv\u00e4ndarna alltid titta p\u00e5 sin egen information. F\u00f6r att titta p\u00e5 en annan anv\u00e4ndares information s\u00e5 m\u00e5ste anv\u00e4ndaren som k\u00f6r kommandot ha privilegier som inkluderar \u00e5tg\u00e4rden <code>viewUser<\/code> i den andra anv\u00e4ndarens databas.<\/p>\n<p>N\u00e4r du k\u00f6r kommandot <code>userInfo<\/code> s\u00e5 kan du f\u00e5 f\u00f6ljande information beroende p\u00e5 de angivna alternativen:<\/p>\n<pre><code class=\"language-markdown\">{\n  \"users\" : [\n    {\n      \"_id\" : \"&lt;db&gt;.&lt;username&gt;\",\n      \"userId\" : &lt;UUID&gt;, \/\/ Starting in MongoDB 4.0.9\n      \"user\" : \"&lt;username&gt;\",\n      \"db\" : \"&lt;db&gt;\",\n      \"mechanisms\" : [ ... ],  \/\/ Starting in MongoDB 4.0\n      \"customData\" : &lt;document&gt;,\n      \"roles\" : [ ... ],\n      \"credentials\": { ... }, \/\/ only if showCredentials: true\n      \"inheritedRoles\" : [ ... ],  \/\/ only if showPrivileges: true or showAuthenticationRestrictions: true\n      \"inheritedPrivileges\" : [ ... ], \/\/ only if showPrivileges: true or showAuthenticationRestrictions: true\n      \"inheritedAuthenticationRestrictions\" : [ ] \/\/ only if showPrivileges: true or showAuthenticationRestrictions: true\n      \"authenticationRestrictions\" : [ ... ] \/\/ only if showAuthenticationRestrictions: true\n    },\n  ],\n  \"ok\" : 1\n} <\/code><\/pre>\n<p>Nu n\u00e4r du har en allm\u00e4n uppfattning om vad du kan \u00e5stadkomma med kommandot <code>usersInfo<\/code> s\u00e5 \u00e4r n\u00e4sta fr\u00e5ga r\u00e4tt s\u00e5 uppenbar: Vilka kommandon kan vara praktiska f\u00f6r att titta p\u00e5 specifika anv\u00e4ndare och flera anv\u00e4ndare?<\/p>\n<p>H\u00e4r \u00e4r tv\u00e5 praktiska exempel f\u00f6r att illustrera detta:<br \/>\nDu kanske vill titta p\u00e5 specifika privilegier och information f\u00f6r specifika anv\u00e4ndare, men inte p\u00e5 autentiseringsuppgifter. f\u00f6r anv\u00e4ndaren &#8221;Anthony&#8221; som definieras i databasen &#8221;office&#8221;, s\u00e5 utf\u00f6r du f\u00f6ljande kommando: &#8221;Anthony&#8221; \u00e4r en anv\u00e4ndare som \u00e4r definierad i databasen &#8221;office&#8221;:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    usersInfo:  { user: \"Anthony\", db: \"office\" },\n    showPrivileges: true\n  }\n)<\/code><\/pre>\n<p>Om du vill titta p\u00e5 en anv\u00e4ndare i den aktuella databasen s\u00e5 kan du bara n\u00e4mna anv\u00e4ndaren vid namn. Om du exempelvis befinner dig i hemdatabasen och en anv\u00e4ndare som heter &#8221;Timothy&#8221; finns i hemdatabasen s\u00e5 kan du k\u00f6ra f\u00f6ljande kommando:<\/p>\n<pre><code class=\"language-markdown\">db.getSiblingDB(\"home\").runCommand(\n  {\n    usersInfo:  \"Timothy\",\n    showPrivileges: true\n  }\n)<\/code><\/pre>\n<p>D\u00e4refter s\u00e5 kan du anv\u00e4nda en array om du vill titta p\u00e5 information om olika anv\u00e4ndare. Du kan antingen inkludera de valfria f\u00e4lten <code>showCredentials<\/code> och <code>showPrivileges<\/code>, eller s\u00e5 kan du v\u00e4lja att utel\u00e4mna dem. S\u00e5 h\u00e4r skulle kommandot se ut:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand({\nusersInfo: [ { user: \"Anthony\", db: \"office\" }, { user: \"Timothy\", db: \"home\" } ],\n  showPrivileges: true\n})<\/code><\/pre>\n<h5>revokeRolesFromUser<\/h5>\n<p>Du kan anv\u00e4nda kommandot <code>revokeRolesFromUser<\/code> f\u00f6r att ta bort en eller flera roller fr\u00e5n en anv\u00e4ndare i den databas d\u00e4r rollerna finns. Kommandot <code>revokeRolesFromUser<\/code> har f\u00f6ljande syntax:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    revokeRolesFromUser: \"&lt;user&gt;\",\n    roles: [\n      { role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" } | \"&lt;role&gt;\",\n    ],\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>I syntaxen ovan s\u00e5 kan du ange b\u00e5de anv\u00e4ndardefinierade och inbyggda roller i f\u00e4ltet <code>roles<\/code>. I likhet med kommandot <code>grantRolesToUser<\/code> s\u00e5 kan du ange den roll som du vill \u00e5terkalla i ett dokument eller anv\u00e4nda dess namn.<\/p>\n<p>F\u00f6r att kunna utf\u00f6ra kommandot <code>revokeRolesFromUser<\/code> s\u00e5 m\u00e5ste du ha \u00e5tg\u00e4rden <code>revokeRole<\/code> i den angivna databasen.<\/p>\n<p>H\u00e4r \u00e4r ett exempel f\u00f6r att f\u00f6rklara vad som g\u00e4ller. Enheten <code>productUser00<\/code> i produktdatabasen hade f\u00f6ljande roller:<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"assetsWriter\",\n    \"db\" : \"assets\"\n  },\n  {\n    \"role\" : \"readWrite\",\n    \"db\" : \"stock\"\n  },\n  {\n    \"role\" : \"read\",\n    \"db\" : \"products\"\n  }\n]<\/code><\/pre>\n<p>F\u00f6ljande kommando <code>revokeRolesFromUser<\/code> tar bort tv\u00e5 av anv\u00e4ndarens roller: rollen &#8221;read&#8221; fr\u00e5n <code>products<\/code> och rollen <code>assetsWriter<\/code> fr\u00e5n databasen &#8221;assets&#8221;:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand( { revokeRolesFromUser: \"productUser00\",\n  roles: [\n    { role: \"AssetsWriter\", db: \"assets\" },\n    \"read\"\n  ],\n  writeConcern: { w: \"majority\" }\n} )<\/code><\/pre>\n<p>Anv\u00e4ndaren &#8221;productUser00&#8221; i produktdatabasen har nu endast en roll kvar:<\/p>\n<pre><code class=\"language-markdown\">\"roles\" : [\n  {\n    \"role\" : \"readWrite\",\n    \"db\" : \"stock\"\n  }\n]<\/code><\/pre>\n<h4>Kommandon f\u00f6r rollhantering<\/h4>\n<p>Roller ger anv\u00e4ndare tillg\u00e5ng till resurser. Flera inbyggda roller kan anv\u00e4ndas av administrat\u00f6rer f\u00f6r att kontrollera \u00e5tkomsten till ett MongoDB-system. Om rollerna inte t\u00e4cker de \u00f6nskade privilegierna s\u00e5 kan du till och med g\u00e5 l\u00e4ngre och skapa nya roller i en viss databas.<\/p>\n<h5>dropRole<\/h5>\n<p>Med kommandot <code>dropRole<\/code> s\u00e5 kan du ta bort en anv\u00e4ndardefinierad roll fr\u00e5n den databas som du k\u00f6r kommandot p\u00e5. F\u00f6r att utf\u00f6ra det h\u00e4r kommandot s\u00e5 anv\u00e4nder du f\u00f6ljande syntax:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    dropRole: \"&lt;role&gt;\",\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>F\u00f6r att du ska kunna utf\u00f6ra \u00e5tg\u00e4rden s\u00e5 m\u00e5ste du ha \u00e5tg\u00e4rden <code>dropRole<\/code> p\u00e5 den angivna databasen. F\u00f6ljande \u00e5tg\u00e4rder skulle ta bort rollen <code>writeTags<\/code> fr\u00e5n databasen &#8221;products&#8221;:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand(\n  {\n    dropRole: \"writeTags\",\n    writeConcern: { w: \"majority\" }\n  }\n)<\/code><\/pre>\n<h5>createRole<\/h5>\n<p>Du kan anv\u00e4nda kommandot <code>createRole<\/code> f\u00f6r att skapa en roll och ange dess privilegier. Rollen g\u00e4ller f\u00f6r den databas som du v\u00e4ljer att k\u00f6ra kommandot p\u00e5. Kommandot <code>createRole<\/code> skulle ge ett felmeddelande om dubbla roller om rollen redan finns i databasen.<\/p>\n<p>F\u00f6lj syntaxen f\u00f6r att utf\u00f6ra kommandot:<\/p>\n<pre><code class=\"language-markdown\">db.adminCommand(\n  {\n    createRole: \"&lt;new role&gt;\",\n    privileges: [\n      { resource: { &lt;resource&gt; }, actions: [ \"&lt;action&gt;\", ... ] },\n    ],\n    roles: [\n      { role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" } | \"&lt;role&gt;\",\n    ],\n    authenticationRestrictions: [\n      {\n        clientSource: [\"&lt;IP&gt;\" | \"&lt;CIDR range&gt;\", ...],\n        serverAddress: [\"&lt;IP&gt;\" | \"&lt;CIDR range&gt;\", ...]\n      },\n    ],\n    writeConcern: &lt;write concern document&gt;,\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>En rolls privilegier g\u00e4ller f\u00f6r den databas d\u00e4r rollen skapades. Rollen kan \u00e4rva privilegier fr\u00e5n andra roller i sin databas. En roll som har skapats i databasen &#8221;admin&#8221; kan exempelvis inneh\u00e5lla privilegier som antingen g\u00e4ller ett kluster eller alla databaser. Den kan \u00e4ven \u00e4rva privilegier fr\u00e5n roller som finns i andra databaser.<\/p>\n<p>F\u00f6r att skapa en roll i en databas s\u00e5 m\u00e5ste du ha tv\u00e5 saker:<\/p>\n<ol>\n<li>\u00c5tg\u00e4rden <code>grantRole<\/code> p\u00e5 den databasen f\u00f6r att n\u00e4mna privilegier f\u00f6r den nya rollen samt f\u00f6r att n\u00e4mna roller att \u00e4rva ifr\u00e5n.<\/li>\n<li>\u00c5tg\u00e4rden <code>createRole<\/code> p\u00e5 den databasresursen.<\/li>\n<\/ol>\n<p>F\u00f6ljande kommando <code>createRole<\/code> skapar en roll <code>clusterAdmin<\/code> i anv\u00e4ndardatabasen:<\/p>\n<pre><code class=\"language-markdown\">db.adminCommand({ createRole: \"clusterAdmin\",\n  privileges: [\n    { resource: { cluster: true }, actions: [ \"addShard\" ] },\n    { resource: { db: \"config\", collection: \"\" }, actions: [ \"find\", \"remove\" ] },\n    { resource: { db: \"users\", collection: \"usersCollection\" }, actions: [ \"update\", \"insert\" ] },\n    { resource: { db: \"\", collection: \"\" }, actions: [ \"find\" ] }\n  ],\n  roles: [\n    { role: \"read\", db: \"user\" }\n  ],\n  writeConcern: { w: \"majority\" , wtimeout: 5000 }\n})<\/code><\/pre>\n<h5>grantRolesToRole<\/h5>\n<p>Med kommandot <code>grantRolesToRole<\/code> s\u00e5 kan du tilldela roller till en anv\u00e4ndardefinierad roll. Kommandot <code>grantRolesToRole<\/code> p\u00e5verkar rollerna i den databas d\u00e4r kommandot utf\u00f6rs.<\/p>\n<p>Kommandot <code>grantRolesToRole<\/code> har f\u00f6ljande syntax:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    grantRolesToRole: \"&lt;role&gt;\",\n    roles: [\n     { role: \"&lt;role&gt;\", db: \"&lt;database&gt;\" },\n    ],\n    writeConcern: { &lt;write concern&gt; },\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p><code>grantRolesToUser<\/code> Du beh\u00f6ver en <code>grantRole<\/code> -\u00e5tg\u00e4rd i en databas f\u00f6r att kommandot ska kunna utf\u00f6ras korrekt.<\/p>\n<p>I f\u00f6ljande exempel s\u00e5 kan du anv\u00e4nda kommandot <code>grantRolesToRole<\/code>\u00a0f\u00f6r att uppdatera rollen <code>productsReader<\/code> i databasen &#8221;products&#8221; s\u00e5 att den \u00e4rver r\u00e4ttigheterna f\u00f6r rollen <code>productsWriter<\/code>:<\/p>\n<pre><code class=\"language-markdown\">use products\ndb.runCommand(\n  { \n    grantRolesToRole: \"productsReader\",\n    roles: [\n      \"productsWriter\"\n    ],\n    writeConcern: { w: \"majority\" , wtimeout: 5000 }\n  }\n)<\/code><\/pre>\n<h5>revokePrivilegesFromRole<\/h5>\n<p>Du kan anv\u00e4nda <code>revokePrivilegesFromRole<\/code> f\u00f6r att ta bort de angivna privilegierna fr\u00e5n den anv\u00e4ndardefinierade rollen i den databas d\u00e4r kommandot utf\u00f6rs. F\u00f6r att kommandot ska kunna utf\u00f6ras korrekt s\u00e5 m\u00e5ste du t\u00e4nka p\u00e5 f\u00f6ljande syntax:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    revokePrivilegesFromRole: \"&lt;role&gt;\",\n    privileges: [\n      { resource: { &lt;resource&gt; }, actions: [ \"&lt;action&gt;\", ... ] },\n    ],\n    writeConcern: &lt;write concern document&gt;,\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>F\u00f6r att \u00e5terkalla en r\u00e4ttighet s\u00e5 m\u00e5ste m\u00f6nstret &#8221;resursdokument&#8221; matcha r\u00e4ttighetens f\u00e4lt &#8221;resource&#8221;. F\u00e4ltet &#8221;actions&#8221; kan antingen vara en exakt matchning eller en delm\u00e4ngd.<\/p>\n<p>T\u00e4nk exempelvis p\u00e5 rollen <code>manageRole<\/code> i produktdatabasen med f\u00f6ljande privilegier som anger databasen &#8221;managers&#8221; som resurs:<\/p>\n<pre><code class=\"language-markdown\">{\n  \"resource\" : {\n    \"db\" : \"managers\",\n    \"collection\" : \"\"\n  },\n  \"actions\" : [\n    \"insert\",\n    \"remove\"\n  ]\n}<\/code><\/pre>\n<p>Du kan inte \u00e5terkalla \u00e5tg\u00e4rderna &#8221;infoga&#8221; eller &#8221;ta bort&#8221; fr\u00e5n endast en samling i managers-databasen. F\u00f6ljande \u00e5tg\u00e4rder orsakar ingen \u00e4ndring i rollen:<\/p>\n<pre><code class=\"language-markdown\">use managers\ndb.runCommand(\n  {\n    revokePrivilegesFromRole: \"manageRole\",\n    privileges: [\n      {\n        resource : {\n          db : \"managers\",\n          collection : \"kiosks\"\n        },\n        actions : [\n          \"insert\",\n          \"remove\"\n        ]\n      }\n    ]\n  }\n)<\/code><\/pre>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    revokePrivilegesFromRole: \"manageRole\",\n    privileges:\n      [\n        {\n          resource : {\n          db : \"managers\",\n          collection : \"kiosks\"\n        },\n        actions : [\n          \"insert\"\n        ]\n      }\n    ]\n  }\n)<\/code><\/pre>\n<p>F\u00f6r att \u00e5terkalla \u00e5tg\u00e4rderna &#8221;infoga&#8221; och\/eller &#8221;ta bort&#8221; fr\u00e5n rollen <code>manageRole<\/code> s\u00e5 m\u00e5ste du matcha resursdokumentet exakt. F\u00f6ljande \u00e5tg\u00e4rd \u00e5terkallar exempelvis endast \u00e5tg\u00e4rden &#8221;ta bort&#8221; fr\u00e5n den befintliga r\u00e4ttigheten:<\/p>\n<pre><code class=\"language-markdown\">use managers\ndb.runCommand(\n  {\n    revokePrivilegesFromRole: \"manageRole\",\n    privileges:\n      [\n        {\n          resource : {\n            db : \"managers\",\n            collection : \"\"\n        },\n        actions : [ \"remove\" ]\n      }\n    ]\n  }\n)<\/code><\/pre>\n<p>F\u00f6ljande \u00e5tg\u00e4rd tar bort flera privilegier fr\u00e5n rollen &#8221;executive&#8221; i managerdatabasen:<\/p>\n<pre><code class=\"language-markdown\">use managers\ndb.runCommand(\n  {\n    revokePrivilegesFromRole: \"executive\",\n    privileges: [\n      {\n        resource: { db: \"managers\", collection: \"\" },\n        actions: [ \"insert\", \"remove\", \"find\" ]\n      },\n      {\n        resource: { db: \"managers\", collection: \"partners\" },\n        actions: [ \"update\" ]\n      }\n    ],\n    writeConcern: { w: \"majority\" }\n    }\n)<\/code><\/pre>\n<h5>rolesInfo<\/h5>\n<p>Kommandot <code>rolesInfo<\/code> returnerar information om privilegier och arv f\u00f6r angivna roller, inklusive b\u00e5de inbyggda och anv\u00e4ndardefinierade roller. Du kan \u00e4ven anv\u00e4nda kommandot <code>rolesInfo<\/code> f\u00f6r att h\u00e4mta alla roller som \u00e4r kopplade till en databas.<\/p>\n<p>F\u00f6r korrekt utf\u00f6rande, f\u00f6lj den h\u00e4r syntaxen:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    rolesInfo: { role: &lt;name&gt;, db: &lt;db&gt; },\n    showPrivileges: &lt;Boolean&gt;,\n    showBuiltinRoles: &lt;Boolean&gt;,\n    comment: &lt;any&gt; \n  }\n)<\/code><\/pre>\n<p>Om du vill h\u00e4mta information om en roll fr\u00e5n den aktuella databasen s\u00e5 kan du ange dess namn p\u00e5 f\u00f6ljande s\u00e4tt:<\/p>\n<pre><code class=\"language-markdown\">{ rolesInfo: \"&lt;rolename&gt;\" }<\/code><\/pre>\n<p>Om du vill f\u00e5 tillbaka information om en roll fr\u00e5n en annan databas s\u00e5 kan du n\u00e4mna rollen i ett dokument som n\u00e4mner rollen och databasen:<\/p>\n<pre><code class=\"language-markdown\">{ rolesInfo: { role: \"&lt;rolename&gt;\", db: \"&lt;database&gt;\" } }<\/code><\/pre>\n<p>F\u00f6ljande kommando returnerar exempelvis information om roll-arv f\u00f6r rollen manager som har definierats i databasen managers:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n      rolesInfo: { role: \"executive\", db: \"managers\" }\n   }\n)<\/code><\/pre>\n<p>N\u00e4sta kommando returnerar information om arv av roller: <code>accountManager<\/code> i den databas d\u00e4r kommandot utf\u00f6rs:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n      rolesInfo: \"accountManager\"\n   }\n)<\/code><\/pre>\n<p>F\u00f6ljande kommando returnerar b\u00e5de privilegier och roll-arv f\u00f6r rollen &#8221;executive&#8221; som har definierats i databasen managers:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n     rolesInfo: { role: \"executive\", db: \"managers\" },\n     showPrivileges: true\n   }\n)<\/code><\/pre>\n<p>Om du vill n\u00e4mna flera roller s\u00e5 kan du anv\u00e4nda en array. Du kan \u00e4ven n\u00e4mna varje roll i matrisen som en str\u00e4ng eller ett dokument.<\/p>\n<p>Du b\u00f6r endast anv\u00e4nda en str\u00e4ng om rollen finns i den databas d\u00e4r kommandot utf\u00f6rs:<\/p>\n<pre><code class=\"language-markdown\">{\n  rolesInfo: [\n    \"&lt;rolename&gt;\",\n    { role: \"&lt;rolename&gt;\", db: \"&lt;database&gt;\" },\n  ]\n}<\/code><\/pre>\n<p>F\u00f6ljande kommando ger exempelvis information om tre roller i tre olika databaser:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n   {\n    rolesInfo: [\n      { role: \"executive\", db: \"managers\" },\n      { role: \"accounts\", db: \"departments\" },\n      { role: \"administrator\", db: \"products\" }\n    ]\n  }\n)<\/code><\/pre>\n<p>Du kan f\u00e5 fram b\u00e5de privilegier och roll-arv p\u00e5 f\u00f6ljande s\u00e4tt:<\/p>\n<pre><code class=\"language-markdown\">db.runCommand(\n  {\n    rolesInfo: [\n      { role: \"executive\", db: \"managers\" },\n      { role: \"accounts\", db: \"departments\" },\n      { role: \"administrator\", db: \"products\" }\n    ],\n    showPrivileges: true\n  }\n)<\/code><\/pre>\n<h2>Inb\u00e4ddning av MongoDB-dokument f\u00f6r b\u00e4ttre prestanda<\/h2>\n<p>Dokumentdatabaser som MongoDB l\u00e5ter dig definiera ditt schema enligt dina behov. F\u00f6r att skapa optimala scheman i MongoDB s\u00e5 kan du b\u00e4dda in dokumenten. S\u00e5 ist\u00e4llet f\u00f6r att matcha din applikation mot en datamodell s\u00e5 kan du bygga en datamodell som matchar ditt anv\u00e4ndningsomr\u00e5de.<\/p>\n<p>Med inb\u00e4ddade dokument s\u00e5 kan du <a href=\"https:\/\/kinqsta.com\/blog\/mysql-backup-database\/\">lagra relaterade data<\/a> som du f\u00e5r tillg\u00e5ng till p\u00e5 samma st\u00e4lle. N\u00e4r du utformar scheman f\u00f6r MongoDB s\u00e5 rekommenderas det att du b\u00e4ddar in dokument som standard. Anv\u00e4nd endast databas- eller applikationsspecifika joins och referenser n\u00e4r det \u00e4r v\u00e4rt det.<\/p>\n<p>Se till att arbetsbelastningen kan h\u00e4mta ett dokument s\u00e5 ofta som det kr\u00e4vs. Samtidigt b\u00f6r dokumentet \u00e4ven ha alla data som det beh\u00f6ver. Detta \u00e4r avg\u00f6rande f\u00f6r att din applikation ska f\u00e5 en exceptionell prestanda.<\/p>\n<p>Nedan hittar du n\u00e5gra olika m\u00f6nster f\u00f6r att b\u00e4dda in dokument:<\/p>\n<h3>M\u00f6nster f\u00f6r inb\u00e4ddade dokument<\/h3>\n<p>Du kan anv\u00e4nda detta f\u00f6r att \u00e4ven b\u00e4dda in komplicerade understrukturer i de dokument som de anv\u00e4nds med. Genom att b\u00e4dda in sammanh\u00e4ngande data i ett enda dokument s\u00e5 kan man minska antalet l\u00e4soperationer som beh\u00f6vs f\u00f6r att f\u00e5 fram data. Generellt sett s\u00e5 b\u00f6r du strukturera ditt schema s\u00e5 att applikationen f\u00e5r all n\u00f6dv\u00e4ndig information i en enda l\u00e4sh\u00e4ndelse. Regeln \u00e4r d\u00e4rf\u00f6r att det som <strong>anv\u00e4nds tillsammans b\u00f6r lagras<\/strong> <strong>tillsammans<\/strong>.<\/p>\n<h3>M\u00f6nster f\u00f6r inb\u00e4ddad delm\u00e4ngd<\/h3>\n<p>M\u00f6nstret f\u00f6r inb\u00e4ddad delm\u00e4ngd \u00e4r ett hybridfall. Du anv\u00e4nder detta f\u00f6r en separat samling av en l\u00e5ng lista med relaterade objekt, d\u00e4r du kan ha n\u00e5gra av dessa objekt till hands f\u00f6r visning.<\/p>\n<p>H\u00e4r \u00e4r ett exempel med en lista \u00f6ver filmrecensioner:<\/p>\n<pre><code class=\"language-markdown\">&gt; db.movie.findOne()\n{   \n  _id: 321475,   \n  title: \"The Dark Knight\"\n}  \n&gt; db.review.find({movie_id: 321475})\n{   \n  _id: 264579,   \n  movie_id: 321475,   \n  stars: 4   \n  text: \"Amazing\"   \n}\n{   \n  _id: 375684,   \n  movie_id: 321475,   \n  stars:5,   \n  text: \"Mindblowing\"\n}<\/code><\/pre>\n<p>T\u00e4nk dig tusen liknande recensioner, men du planerar att bara visa de tv\u00e5 senaste n\u00e4r du visar en film. I det h\u00e4r scenariot s\u00e5 \u00e4r det vettigt att lagra den delm\u00e4ngden som en lista i filmdokumentet:<\/p>\n<pre><code class=\"language-markdown\">&gt; db.movie.findOne({_id: 321475})   \n{   \n  _id: 321475,   \n  title: \"The Dark Knight\",   \n  recent_reviews: [   \n    {_id: 264579, stars: 4, text: \"Amazing\"},   \n    {_id: 375684, stars: 5, text: \"Mindblowing\"}   \n  ]   \n}<\/code><\/pre>\n<p>Enkelt uttryckt: om du regelbundet f\u00e5r tillg\u00e5ng till en delm\u00e4ngd av relaterade objekt, se till att du b\u00e4ddar in den.<\/p>\n<h3>Oberoende \u00e5tkomst<\/h3>\n<p>Det kan h\u00e4nda att du vill lagra underdokument i sin egen samling f\u00f6r att skilja dem fr\u00e5n den \u00f6verordnade samlingen.<\/p>\n<p>Ta exempelvis ett f\u00f6retags produktlinje. Om f\u00f6retaget s\u00e4ljer en liten upps\u00e4ttning av produkter s\u00e5 vill man kanske lagra dem i f\u00f6retagsdokumentet. Men om man vill \u00e5teranv\u00e4nda dem i flera f\u00f6retag eller komma \u00e5t dem direkt genom deras lagerh\u00e5llningsenhet (SKU) s\u00e5 b\u00f6r man \u00e4ven lagra dem i deras egen samling.<\/p>\n<p>Om du manipulerar eller har tillg\u00e5ng till enheter som \u00e4r oberoende av varandra s\u00e5 ska du skapa en samling f\u00f6r att lagra den separat f\u00f6r b\u00e4sta praxis.<\/p>\n<h3>Obundna listor<\/h3>\n<p>Att lagra korta listor med relaterad information i deras dokument har en nackdel. Om din lista forts\u00e4tter att v\u00e4xa okontrollerat s\u00e5 b\u00f6r du inte l\u00e4gga den i ett enda dokument. Detta beror p\u00e5 att du inte skulle kunna st\u00f6dja den s\u00e4rskilt l\u00e4nge.<\/p>\n<p>Det finns tv\u00e5 sk\u00e4l till detta. F\u00f6r det f\u00f6rsta s\u00e5 har MongoDB en gr\u00e4ns f\u00f6r storleken p\u00e5 ett enskilt dokument. F\u00f6r det andra s\u00e5 kommer du att uppleva negativa resultat av en okontrollerad minnesanv\u00e4ndning om du f\u00e5r tillg\u00e5ng till dokumentet med f\u00f6r m\u00e5nga frekvenser.<\/p>\n<p>Enkelt uttryckt: Om en lista b\u00f6rjar att v\u00e4xa gr\u00e4nsl\u00f6st s\u00e5 ska du g\u00f6ra en samling f\u00f6r att lagra den separat.<\/p>\n<h3>Ut\u00f6kat referensm\u00f6nster<\/h3>\n<p>Det ut\u00f6kade referensm\u00f6nstret \u00e4r som undergruppsm\u00f6nstret. Det optimerar \u00e4ven information som du regelbundet f\u00e5r tillg\u00e5ng till n\u00e4r det lagras p\u00e5 dokumentet.<\/p>\n<p>H\u00e4r utnyttjas det ist\u00e4llet f\u00f6r en lista n\u00e4r ett dokument h\u00e4nvisar till ett annat dokument som finns i samma samling. Samtidigt s\u00e5 lagras \u00e4ven vissa f\u00e4lt fr\u00e5n det andra dokumentet f\u00f6r att man ska f\u00e5 tillg\u00e5ng till dem.<\/p>\n<p>Till exempel:<\/p>\n<pre><code class=\"language-markdown\">&gt; db.movie.findOne({_id: 245434})\n{   \n  _id: 245434,   \n  title: \"Mission Impossible 4 - Ghost Protocol\",   \n  studio_id: 924935,   \n  studio_name: \"Paramount Pictures\"   \n}<\/code><\/pre>\n<p>Som du kan se s\u00e5 lagras &#8221;the studio_id&#8221; s\u00e5 att du kan s\u00f6ka mer information om den studio som skapade filmen. Men studions namn kopieras \u00e4ven till detta dokument f\u00f6r enkelhetens skull.<\/p>\n<p>Om du vill b\u00e4dda in information fr\u00e5n \u00e4ndrade dokument regelbundet s\u00e5 ska du komma ih\u00e5g att uppdatera dokument d\u00e4r du har kopierat informationen n\u00e4r informationen \u00e4ndras. Med andra ord, om du rutinm\u00e4ssigt f\u00e5r tillg\u00e5ng till vissa f\u00e4lt fr\u00e5n ett dokument som det h\u00e4nvisas till, b\u00e4dda in dem.<\/p>\n<h2>\u00d6vervakning av MongoDB<\/h2>\n<p>Du kan anv\u00e4nda <a href=\"https:\/\/kinqsta.com\/blog\/apm-tools\/\">\u00f6vervakningsverktyg<\/a> som <a href=\"https:\/\/kinqsta.com\/se\/apm-verktyg\/\">Kinsta APM<\/a> f\u00f6r att fels\u00f6ka l\u00e5nga API-anrop, l\u00e5ngsamma databasfr\u00e5gor, l\u00e5nga externa webbadress-f\u00f6rfr\u00e5gningar, f\u00f6r att n\u00e4mna n\u00e5gra exempel. Du kan \u00e4ven anv\u00e4nda kommandon f\u00f6r att f\u00f6rb\u00e4ttra databasens prestanda. Ut\u00f6ver detta s\u00e5 kan du anv\u00e4nda dem f\u00f6r att inspektera <a href=\"https:\/\/kinqsta.com\/blog\/wordpress-repair-database\/\">h\u00e4lsan hos dina databasinstanser<\/a>.<\/p>\n<h3>Varf\u00f6r b\u00f6r du \u00f6vervaka MongoDB-databaser?<\/h3>\n<p>En viktig aspekt av <a href=\"https:\/\/kinqsta.com\/se\/mykinsta\/\">planeringen av databasadministrationen<\/a> \u00e4r att \u00f6vervaka klustrets prestanda och h\u00e4lsa. MongoDB Atlas hanterar majoriteten av administrationsarbetet genom sin f\u00f6rm\u00e5ga till feltolerans\/skalning.<\/p>\n<p>Trots detta s\u00e5 m\u00e5ste anv\u00e4ndarna veta hur man f\u00f6ljer kluster. De b\u00f6r \u00e4ven veta hur de ska skala eller justera vad de beh\u00f6ver innan de drabbas av en kris.<\/p>\n<p>Genom att \u00f6vervaka MongoDB-databaser s\u00e5 kan du:<\/p>\n<ul>\n<li>Observera utnyttjandet av resurserna.<\/li>\n<li>F\u00f6rst\u00e5 den aktuella kapaciteten i din databas.<\/li>\n<li>Reagera och uppt\u00e4cka problem i realtid f\u00f6r att f\u00f6rb\u00e4ttra din applikationsstack.<\/li>\n<li>Observera f\u00f6rekomsten av prestandaproblem och onormalt beteende.<\/li>\n<li>Anpassa till kraven f\u00f6r styrning\/dataskydd och serviceniv\u00e5avtal (SLA).<\/li>\n<\/ul>\n<h3>Viktiga m\u00e4tv\u00e4rden att \u00f6vervaka<\/h3>\n<p>N\u00e4r du \u00f6vervakar MongoDB s\u00e5 finns det fyra viktiga aspekter som du m\u00e5ste t\u00e4nka p\u00e5:<\/p>\n<h4>MongoDB h\u00e5rdvarum\u00e4tv\u00e4rden<\/h4>\n<p>H\u00e4r \u00e4r de viktigaste m\u00e4tv\u00e4rdena f\u00f6r \u00f6vervakning av maskinvara:<\/p>\n<h5>Normaliserad process-CPU<\/h5>\n<p>Den definieras som den procentuella andel av tiden som CPU:n spenderar p\u00e5 till\u00e4mpningsprogramvara som underh\u00e5ller MongoDB-processen.<\/p>\n<p>Du kan skala detta till ett intervall p\u00e5 0-100 % genom att dividera det med antalet CPU-k\u00e4rnor. Detta inkluderar CPU som utnyttjas av moduler som k\u00e4rnan och anv\u00e4ndaren.<\/p>\n<p>En h\u00f6g CPU f\u00f6r k\u00e4rnan kan visa att CPU:n \u00e4r utt\u00f6md genom operativsystemets operationer. Men anv\u00e4ndaren som \u00e4r kopplad till MongoDB-verksamheten kan vara den grundl\u00e4ggande orsaken till CPU-utnyttjandet.<\/p>\n<h5>Normaliserad system-CPU<\/h5>\n<p>Det \u00e4r den procentuella andel av tiden som CPU:n spenderade p\u00e5 systemanrop f\u00f6r att betj\u00e4na MongoDB-processen. Du kan skala den till ett intervall p\u00e5 0-100 % genom att dividera den med antalet CPU-k\u00e4rnor. Den t\u00e4cker \u00e4ven den CPU som anv\u00e4nds av moduler som iowait, user, kernel, steal osv.<\/p>\n<p>Anv\u00e4ndar-CPU eller h\u00f6g k\u00e4rna kan vara ett tecken p\u00e5 CPU-utmattning genom MongoDB-operationer (programvara). H\u00f6g iowait kan vara kopplad till att lagringskraften \u00e4r utt\u00f6md och orsakar CPU-utmattning.<\/p>\n<h5>Disk IOPS<\/h5>\n<p>Disk IOPS \u00e4r det genomsnittliga antalet f\u00f6rbrukade IO-operationer per sekund p\u00e5 MongoDB:s diskpartition.<\/p>\n<h5>Disk Latens<\/h5>\n<p>Detta \u00e4r diskpartitionens l\u00e4s- och skrivlatens i millisekunder i MongoDB. H\u00f6ga v\u00e4rden (&gt;500 ms) visar att lagringsarkivet kan p\u00e5verka MongoDB:s prestanda.<\/p>\n<h5>Systemminne<\/h5>\n<p>Anv\u00e4nd systemminne f\u00f6r att beskriva fysiska minnesbytes som anv\u00e4nds j\u00e4mf\u00f6rt med tillg\u00e4ngligt ledigt utrymme.<\/p>\n<p>Det tillg\u00e4ngliga m\u00e4tv\u00e4rdet ger en ungef\u00e4rlig uppskattning av antalet byte av tillg\u00e4ngligt systemminne. Du kan anv\u00e4nda detta f\u00f6r att k\u00f6ra nya applikationer, utan att byta ut n\u00e5got.<\/p>\n<h5>Fritt diskutrymme<\/h5>\n<p>Detta definieras som det totala antalet byte av fritt diskutrymme p\u00e5 MongoDB:s diskpartition. MongoDB Atlas erbjuder en automatisk skalning baserat p\u00e5 detta m\u00e4tv\u00e4rde.<\/p>\n<h5>Utbytesanv\u00e4ndning<\/h5>\n<p>Du kan anv\u00e4nda ett diagram \u00f6ver swapanv\u00e4ndning f\u00f6r att beskriva hur mycket minne som placeras p\u00e5 swap-enheten. En h\u00f6g anv\u00e4ndningsgrad i den h\u00e4r grafen visar att swap-minnet anv\u00e4nds. Detta visar att minnet \u00e4r underf\u00f6rs\u00f6rjt f\u00f6r den aktuella arbetsbelastningen.<\/p>\n<h4>MongoDB-klustrets anslutnings- och driftsm\u00e4tningar<\/h4>\n<p>H\u00e4r \u00e4r de viktigaste m\u00e4tv\u00e4rdena f\u00f6r Operation och Anslutnings-m\u00e4tv\u00e4rden:<\/p>\n<h5>Utf\u00f6randetider f\u00f6r operationer<\/h5>\n<p>Den genomsnittliga operationstiden (skriv- och l\u00e4soperationer) som utf\u00f6rs under den valda provperioden.<\/p>\n<h5>Opcounters<\/h5>\n<p>Det \u00e4r den genomsnittliga hastigheten f\u00f6r utf\u00f6rda operationer per sekund under den valda provperioden. Grafen visar operationernas f\u00f6rdelning av operationstyper och hastighet f\u00f6r instansen.<\/p>\n<h5>Anslutningar<\/h5>\n<p>Detta m\u00e5tt avser antalet \u00f6ppna anslutningar till instansen. H\u00f6ga toppar eller siffror kan tyda p\u00e5 en icke-optimerad anslutningsstrategi, antingen fr\u00e5n en server som inte svarar eller fr\u00e5n klientsidan.<\/p>\n<h5>M\u00e5linriktning av f\u00f6rfr\u00e5gningar och utf\u00f6rande av f\u00f6rfr\u00e5gningar<\/h5>\n<p>Detta \u00e4r den genomsnittliga hastigheten per sekund under den valda provperioden f\u00f6r skannade dokument. F\u00f6r de som utf\u00f6r s\u00f6kningar s\u00e5 g\u00e4ller detta under utv\u00e4rdering av s\u00f6kplaner och s\u00f6kningar. F\u00f6rfr\u00e5gningsm\u00e5ls\u00e4ttning visar f\u00f6rh\u00e5llandet mellan antalet skannade dokument och antalet returnerade dokument.<\/p>\n<p>Ett h\u00f6gt antal \u00e4r ett tecken p\u00e5 icke-optimerade operationer. Dessa operationer skannar m\u00e5nga dokument f\u00f6r att returnera en mindre del.<\/p>\n<h5>Skanning och best\u00e4llning<\/h5>\n<p>Den beskriver den genomsnittliga hastigheten per sekund under den valda provperioden av f\u00f6rfr\u00e5gningar. Den returnerar sorterade resultat som inte kan utf\u00f6ra sorteringsoperationen med hj\u00e4lp av ett index.<\/p>\n<h5>K\u00f6er<\/h5>\n<p>K\u00f6er kan beskriva antalet operationer som v\u00e4ntar p\u00e5 en l\u00e5sning, antingen skriv- eller l\u00e4soperationer. Stora k\u00f6er kan vara ett tecken p\u00e5 att schemadesignen inte \u00e4r optimal. Det kan \u00e4ven tyda p\u00e5 konfliktfyllda skrivv\u00e4gar, vilket leder till en h\u00f6g konkurrens om databasresurserna.<\/p>\n<h4>M\u00e4tv\u00e4rden f\u00f6r replikering i MongoDB<\/h4>\n<p>H\u00e4r \u00e4r de prim\u00e4ra m\u00e4tv\u00e4rdena f\u00f6r replikerings\u00f6vervakning:<\/p>\n<h5>Replication Oplog Window<\/h5>\n<p>Den h\u00e4r m\u00e4tningen visar det ungef\u00e4rliga antalet timmar som finns tillg\u00e4ngliga i den prim\u00e4ra replikeringens oplog. Om en sekund\u00e4r replikator sl\u00e4par efter mer \u00e4n det h\u00e4r beloppet s\u00e5 kan den inte h\u00e5lla j\u00e4mna steg och beh\u00f6ver en fullst\u00e4ndig ny-synkronisering.<\/p>\n<h5>Replikeringsf\u00f6rdr\u00f6jning<\/h5>\n<p>Replikeringsf\u00f6rdr\u00f6jning definieras som det ungef\u00e4rliga antalet sekunder som en sekund\u00e4r nod ligger efter den prim\u00e4ra i skrivoperationer. En h\u00f6g replikeringsf\u00f6rdr\u00f6jning tyder p\u00e5 att en sekund\u00e4r nod har sv\u00e5rt att replikera. Detta kan p\u00e5verka din verksamhets latenstid, med tanke p\u00e5 hur l\u00e4s- och skrivrelaterade anslutningarna \u00e4r.<\/p>\n<h5>Replikeringsutrymme<\/h5>\n<p>Det h\u00e4r m\u00e4tv\u00e4rdet avser skillnaden mellan den prim\u00e4ra replikens oplogf\u00f6nster och den sekund\u00e4ra replikf\u00f6rdr\u00f6jningen. Om det h\u00e4r v\u00e4rdet g\u00e5r till noll s\u00e5 kan detta leda till att en sekund\u00e4r replik g\u00e5r in i l\u00e4get \u00c5TERUPPBYGGNAD.<\/p>\n<h5>Opcounters &#8211; repl<\/h5>\n<p>Opcounters &#8211; repl definieras som den genomsnittliga andelen replikeringsoperationer som utf\u00f6rs per sekund under den valda provperioden. Med opcounters &#8211; graph\/metric s\u00e5 kan du ta en titt p\u00e5 operationshastigheten och f\u00f6rdelningen av operationstyper f\u00f6r den angivna instansen.<\/p>\n<h5>Oplog GB\/timme<\/h5>\n<p>Detta definieras som det genomsnittliga antalet gigabyte oplog som prim\u00e4rsystemet genererar per timme. Stora ov\u00e4ntade volymer av oplog kan tyda p\u00e5 en mycket otillr\u00e4cklig skrivarbetsbelastning eller ett problem med schemadesignen.<\/p>\n<h3>Verktyg f\u00f6r \u00f6vervakning av MongoDB:s prestanda<\/h3>\n<p>MongoDB har inbyggda anv\u00e4ndargr\u00e4nssnittsverktyg i Cloud Manager, Atlas och Ops Manager f\u00f6r prestandasp\u00e5rning. Det finns \u00e4ven n\u00e5gra oberoende kommandon och verktyg f\u00f6r att titta p\u00e5 mer r\u00e5baserade data. Vi kommer att tala om n\u00e5gra verktyg som du kan k\u00f6ra fr\u00e5n en host som har tillg\u00e5ng och l\u00e4mpliga roller f\u00f6r att kontrollera din milj\u00f6:<\/p>\n<h4>mongotop<\/h4>\n<p>Du kan utnyttja det h\u00e4r kommandot f\u00f6r att sp\u00e5ra hur mycket tid som en MongoDB-instans spenderar p\u00e5 att skriva och l\u00e4sa data per samling. Anv\u00e4nd f\u00f6ljande syntax:<\/p>\n<pre><code class=\"language-markdown\">mongotop &lt;options&gt; &lt;connection-string&gt; &lt;polling-interval in seconds&gt;<\/code><\/pre>\n<h4>rs.status()<\/h4>\n<p>Det h\u00e4r kommandot returnerar statusen f\u00f6r replika-upps\u00e4ttningen. Det utf\u00f6rs ur synvinkel f\u00f6r den medlem d\u00e4r metoden utf\u00f6rs.<\/p>\n<h4>mongostat<\/h4>\n<p>Du kan anv\u00e4nda kommandot <code>mongostat<\/code> f\u00f6r att f\u00e5 en snabb \u00f6verblick \u00f6ver statusen f\u00f6r din MongoDB-serverinstans. F\u00f6r optimal utdata s\u00e5 kan du anv\u00e4nda det f\u00f6r att bevaka en enskild instans f\u00f6r en specifik h\u00e4ndelse eftersom det ger en vy i realtid.<\/p>\n<p>Anv\u00e4nd det h\u00e4r kommandot f\u00f6r att \u00f6vervaka grundl\u00e4ggande serverstatistik, t.ex. l\u00e5sk\u00f6er, uppdelning av operationer, minnesstatistik f\u00f6r MongoDB och anslutningar\/n\u00e4tverk:<\/p>\n<pre><code class=\"language-markdown\">mongostat &lt;options&gt; &lt;connection-string&gt; &lt;polling interval in seconds&gt;<\/code><\/pre>\n<h4>dbStats<\/h4>\n<p>Det h\u00e4r kommandot returnerar lagringsstatistik f\u00f6r en specifik databas, t.ex. antalet index och deras storlek, total samlingsdata i f\u00f6rh\u00e5llande till lagringsstorlek och samlingsrelaterad statistik (antal samlingar och dokument).<\/p>\n<h4>db.serverStatus()<\/h4>\n<p>Du kan anv\u00e4nda kommandot <code>db.serverStatus()<\/code> f\u00f6r att f\u00e5 en \u00f6verblick \u00f6ver databasens status. Detta ger dig ett dokument som representerar den aktuella instansens metriska r\u00e4knare. Utf\u00f6r det h\u00e4r kommandot med j\u00e4mna mellanrum f\u00f6r att sammanst\u00e4lla statistik om instansen.<\/p>\n<h4>collStats<\/h4>\n<p>Kommandot <code>collStats<\/code> samlar in statistik som liknar den som erbjuds av <code>dbStats<\/code> p\u00e5 samlingsniv\u00e5. Utmatningen best\u00e5r av ett antal objekt i samlingen, m\u00e4ngden diskutrymme som samlingen tar i anspr\u00e5k, samlingens storlek och information om dess index f\u00f6r en viss samling.<\/p>\n<p>Du kan anv\u00e4nda alla dessa kommandon f\u00f6r att erbjuda rapportering och \u00f6vervakning av databasservern i realtid som g\u00f6r att du kan \u00f6vervaka databasens prestanda och fel och hj\u00e4lpa till med ett v\u00e4linformerat beslutsfattande f\u00f6r att f\u00f6rfina en databas.<\/p>\n<h2>Hur man tar bort en MongoDB-databas<\/h2>\n<p>F\u00f6r att ta bort en databas som du skapat i MongoDB m\u00e5ste du ansluta till den via nyckelordet use.<\/p>\n<p>S\u00e4g att du har skapat en databas som heter &#8221;Engineers&#8221;. F\u00f6r att ansluta till databasen s\u00e5 anv\u00e4nder du f\u00f6ljande kommando:<\/p>\n<pre><code class=\"language-markdown\">use Engineers<\/code><\/pre>\n<p>D\u00e4refter skriver du <code>db.dropDatabase()<\/code> f\u00f6r att g\u00f6ra dig av med databasen. Efter utf\u00f6randet s\u00e5 kan du f\u00f6rv\u00e4nta dig f\u00f6ljande resultat:<\/p>\n<pre><code class=\"language-markdown\">{ \"dropped\"  :  \"Engineers\", \"ok\" : 1 }<\/code><\/pre>\n<p>Du kan k\u00f6ra kommandot <code>showdbs<\/code> f\u00f6r att kontrollera om databasen fortfarande finns kvar.<\/p>\n<h2>Sammanfattning<\/h2>\n<p>F\u00f6r att f\u00e5 ut allt v\u00e4rde fr\u00e5n MongoDB s\u00e5 m\u00e5ste du ha en god f\u00f6rst\u00e5else f\u00f6r grunderna. Det \u00e4r d\u00e4rf\u00f6r centralt att ha en fullst\u00e4ndig koll p\u00e5 MongoDB-databaser. Detta kr\u00e4ver att du f\u00f6rst bekantar dig med metoderna f\u00f6r att <a href=\"https:\/\/kinqsta.com\/se\/devkinsta\/\">skapa en databas<\/a>.<\/p>\n\n<p>I den h\u00e4r artikeln s\u00e5 belyser vi de olika metoderna som du kan anv\u00e4nda f\u00f6r att skapa en databas i MongoDB, f\u00f6ljt av en detaljerad beskrivning av n\u00e5gra smarta MongoDB-kommandon f\u00f6r att h\u00e5lla koll p\u00e5 dina databaser. Slutligen s\u00e5 avrundade vi diskussionen genom att diskutera hur du kan utnyttja inb\u00e4ddade dokument och verktyg f\u00f6r prestanda\u00f6vervakning i MongoDB f\u00f6r att se till att ditt arbetsfl\u00f6de fungerar med h\u00f6gsta m\u00f6jliga effektivitet.<\/p>\n<p>Vad tycker du om dessa MongoDB-kommandon? Missade vi en aspekt eller metod som du skulle ha velat se h\u00e4r? L\u00e5t oss veta detta i kommentarerna!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Baserat p\u00e5 dina krav p\u00e5 din programvara s\u00e5 kan du prioritera flexibilitet, skalbarhet, prestanda eller snabbhet. Av den anledningen s\u00e5 blir utvecklare och f\u00f6retag ofta f\u00f6rvirrade &#8230;<\/p>\n","protected":false},"author":117,"featured_media":47033,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[169,642,237,42],"topic":[],"class_list":["post-47032","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-database","tag-mongodb","tag-web-development","tag-webdev"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Hur man skapar en MongoDB-databas: 6 kritiska aspekter att k\u00e4nna till<\/title>\n<meta name=\"description\" content=\"F\u00f6r att b\u00e4ttre f\u00f6rst\u00e5 MongoDB, s\u00e5 m\u00e5ste du veta hur du skapar databaser i MongoDB, med start i MongoDB: s kommando Skapa Databas.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hur man skapar en MongoDB-databas: 6 kritiska aspekter att k\u00e4nna till\" \/>\n<meta property=\"og:description\" content=\"F\u00f6r att b\u00e4ttre f\u00f6rst\u00e5 MongoDB, s\u00e5 m\u00e5ste du veta hur du skapar databaser i MongoDB, med start i MongoDB: s kommando Skapa Databas.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstasweden\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-08T09:01:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-28T12:24:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/11\/mongodb-create-database.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Salman Ravoof\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"F\u00f6r att b\u00e4ttre f\u00f6rst\u00e5 MongoDB, s\u00e5 m\u00e5ste du veta hur du skapar databaser i MongoDB, med start i MongoDB: s kommando Skapa Databas.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/11\/mongodb-create-database.png\" \/>\n<meta name=\"twitter:creator\" content=\"@salmanravoof\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_se\" \/>\n<meta name=\"twitter:label1\" content=\"Skriven av\" \/>\n\t<meta name=\"twitter:data1\" content=\"Salman Ravoof\" \/>\n\t<meta name=\"twitter:label2\" content=\"Ber\u00e4knad l\u00e4stid\" \/>\n\t<meta name=\"twitter:data2\" content=\"30 minuter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/\"},\"author\":{\"name\":\"Salman Ravoof\",\"@id\":\"https:\/\/kinqsta.com\/se\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\"},\"headline\":\"Hur man skapar en MongoDB-databas: 6 kritiska aspekter att k\u00e4nna till\",\"datePublished\":\"2022-11-08T09:01:02+00:00\",\"dateModified\":\"2023-06-28T12:24:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/\"},\"wordCount\":6454,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/se\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/11\/mongodb-create-database.png\",\"keywords\":[\"database\",\"MongoDB\",\"web development\",\"webdev\"],\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/\",\"url\":\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/\",\"name\":\"Hur man skapar en MongoDB-databas: 6 kritiska aspekter att k\u00e4nna till\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/se\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/11\/mongodb-create-database.png\",\"datePublished\":\"2022-11-08T09:01:02+00:00\",\"dateModified\":\"2023-06-28T12:24:25+00:00\",\"description\":\"F\u00f6r att b\u00e4ttre f\u00f6rst\u00e5 MongoDB, s\u00e5 m\u00e5ste du veta hur du skapar databaser i MongoDB, med start i MongoDB: s kommando Skapa Databas.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/11\/mongodb-create-database.png\",\"contentUrl\":\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/11\/mongodb-create-database.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/se\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hur man skapar en MongoDB-databas: 6 kritiska aspekter att k\u00e4nna till\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/se\/#website\",\"url\":\"https:\/\/kinqsta.com\/se\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snabba, s\u00e4kra, premium hosting-l\u00f6sningar\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/se\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/se\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/se\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/se\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinqsta.com\/se\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/se\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstasweden\/\",\"https:\/\/x.com\/kinsta_se\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/se\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987\",\"name\":\"Salman Ravoof\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinqsta.com\/se\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g\",\"caption\":\"Salman Ravoof\"},\"description\":\"Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.\",\"sameAs\":[\"https:\/\/salmanravoof.com\",\"https:\/\/www.linkedin.com\/in\/salman-ravoof-5a749133\/\",\"https:\/\/x.com\/salmanravoof\"],\"url\":\"https:\/\/kinqsta.com\/se\/blog\/author\/salmanravoof\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hur man skapar en MongoDB-databas: 6 kritiska aspekter att k\u00e4nna till","description":"F\u00f6r att b\u00e4ttre f\u00f6rst\u00e5 MongoDB, s\u00e5 m\u00e5ste du veta hur du skapar databaser i MongoDB, med start i MongoDB: s kommando Skapa Databas.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/","og_locale":"sv_SE","og_type":"article","og_title":"Hur man skapar en MongoDB-databas: 6 kritiska aspekter att k\u00e4nna till","og_description":"F\u00f6r att b\u00e4ttre f\u00f6rst\u00e5 MongoDB, s\u00e5 m\u00e5ste du veta hur du skapar databaser i MongoDB, med start i MongoDB: s kommando Skapa Databas.","og_url":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstasweden\/","article_published_time":"2022-11-08T09:01:02+00:00","article_modified_time":"2023-06-28T12:24:25+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/11\/mongodb-create-database.png","type":"image\/png"}],"author":"Salman Ravoof","twitter_card":"summary_large_image","twitter_description":"F\u00f6r att b\u00e4ttre f\u00f6rst\u00e5 MongoDB, s\u00e5 m\u00e5ste du veta hur du skapar databaser i MongoDB, med start i MongoDB: s kommando Skapa Databas.","twitter_image":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/11\/mongodb-create-database.png","twitter_creator":"@salmanravoof","twitter_site":"@kinsta_se","twitter_misc":{"Skriven av":"Salman Ravoof","Ber\u00e4knad l\u00e4stid":"30 minuter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/"},"author":{"name":"Salman Ravoof","@id":"https:\/\/kinqsta.com\/se\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987"},"headline":"Hur man skapar en MongoDB-databas: 6 kritiska aspekter att k\u00e4nna till","datePublished":"2022-11-08T09:01:02+00:00","dateModified":"2023-06-28T12:24:25+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/"},"wordCount":6454,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/se\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/11\/mongodb-create-database.png","keywords":["database","MongoDB","web development","webdev"],"inLanguage":"sv-SE","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/","url":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/","name":"Hur man skapar en MongoDB-databas: 6 kritiska aspekter att k\u00e4nna till","isPartOf":{"@id":"https:\/\/kinqsta.com\/se\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/11\/mongodb-create-database.png","datePublished":"2022-11-08T09:01:02+00:00","dateModified":"2023-06-28T12:24:25+00:00","description":"F\u00f6r att b\u00e4ttre f\u00f6rst\u00e5 MongoDB, s\u00e5 m\u00e5ste du veta hur du skapar databaser i MongoDB, med start i MongoDB: s kommando Skapa Databas.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#primaryimage","url":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/11\/mongodb-create-database.png","contentUrl":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2022\/11\/mongodb-create-database.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/se\/blog\/mongodb-skapa-databas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/se\/"},{"@type":"ListItem","position":2,"name":"Hur man skapar en MongoDB-databas: 6 kritiska aspekter att k\u00e4nna till"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/se\/#website","url":"https:\/\/kinqsta.com\/se\/","name":"Kinsta\u00ae","description":"Snabba, s\u00e4kra, premium hosting-l\u00f6sningar","publisher":{"@id":"https:\/\/kinqsta.com\/se\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/se\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sv-SE"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/se\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/se\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinqsta.com\/se\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/se\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstasweden\/","https:\/\/x.com\/kinsta_se","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/se\/#\/schema\/person\/9cafd2eedd617e640eeea4cf3a5fd987","name":"Salman Ravoof","image":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinqsta.com\/se\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0c5885f75cb78473fb7408e5e49ad190?s=96&d=mm&r=g","caption":"Salman Ravoof"},"description":"Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.","sameAs":["https:\/\/salmanravoof.com","https:\/\/www.linkedin.com\/in\/salman-ravoof-5a749133\/","https:\/\/x.com\/salmanravoof"],"url":"https:\/\/kinqsta.com\/se\/blog\/author\/salmanravoof\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/posts\/47032","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/users\/117"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/comments?post=47032"}],"version-history":[{"count":16,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/posts\/47032\/revisions"}],"predecessor-version":[{"id":53891,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/posts\/47032\/revisions\/53891"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/47032\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/47032\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/47032\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/47032\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/47032\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/47032\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/47032\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/47032\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/47032\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/47032\/translations\/dk"},{"href":"https:\/\/kinqsta.com\/se\/wp-json\/kinsta\/v1\/posts\/47032\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/media\/47033"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/media?parent=47032"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/tags?post=47032"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/se\/wp-json\/wp\/v2\/topic?post=47032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}