Pokud máte pohled v databázi MongoDB, který byste raději sbírkou, jste na správném místě.
Níže je uveden příklad převodu pohledu na kolekci v MongoDB.
Příklad
Tento příklad ukazuje, jak převést pohled na kolekci pomocí databázových nástrojů MongoDB mongodump a mongorestore .
Pokud tyto nástroje nemáte nainstalované, podívejte se na instalační příručku MongoDB.
Najít zobrazení
Nejprve se podívejme na pohledy a kolekce v aktuální databázi:
show collections Výsledek:
employees owners pets system.views v_pettypes
V tomto případě v_pettypes je vlastně pohled.
Že se jedná o pohled, můžeme ověřit pomocí následujícího dotazu:
db.getCollectionInfos( { "name": "v_pettypes"} ) Výsledek:
[
{
"name" : "v_pettypes",
"type" : "view",
"options" : {
"viewOn" : "pets",
"pipeline" : [
{
"$group" : {
"_id" : "$type"
}
}
]
},
"info" : {
"readOnly" : true
}
}
]
Víme, že jde o zobrazení, protože type pole má hodnotu view .
Převést zobrazení na kolekci
Nyní můžeme pokračovat a převést tento pohled na kolekci. Můžeme to udělat pomocí databázových nástrojů MongoDB mongodump a mongorestore .
Použijeme mongodump exportovat zobrazení a mongorestore jej obnovit. Konkrétně zavedeme mongodump výstupní stream do mongorestore . Tímto způsobem můžeme udělat celou věc najednou.
Zde je kód:
mongodump --archive --db=PetHotel --collection=v_pettypes --viewsAsCollections | mongorestore --archive --nsFrom='PetHotel.v_pettypes' --nsTo='PetHotel.pettypes'
Tento kód musíte spustit z příkazového řádku vašeho systému (např. nový terminál nebo okno příkazového řádku). Nespouštějte jej z mongo skořápka.
Spuštěním tohoto kódu byly převedeny v_pettypes zobrazit kolekci nazvanou pettypes ve stejné databázi.
Přesněji řečeno, ve skutečnosti jsme nekonvertovali pohled na sbírku. Jednoduše jsme použili --viewsAsCollections argument vypsat pohled jako kolekci, pak jsme tuto kolekci obnovili zpět do databáze. Původní pohled tedy stále existuje.
Když exportujete pohled jako kolekci, mongodump vytvoří soubor BSON obsahující dokumenty v pohledu. Pokud používáte mongorestore pro obnovení vytvořeného souboru BSON bude pohled obnoven jako kolekce.
Bez použití --viewsAsCollections argument, mongodump exportuje metadata každého pohledu. Pokud zahrnete soubor metadat zobrazení do mongorestore operace, pohled se znovu vytvoří.
Pomocí --viewsAsCollections také vynechává všechny standardní kolekce.
Zkontrolujte výsledky
Pojďme se znovu podívat na naše pohledy a sbírky.
show collections Výsledek:
employees owners pets pettypes system.views v_pettypes
Můžeme tedy vidět novou kolekci s názvem pettypes existuje a stále existuje původní zobrazení.
Můžeme ověřit, že pettypes je kolekce (a nikoli pohled) takto:
db.getCollectionInfos( { "name": "pettypes"} ) Výsledek:
[
{
"name" : "pettypes",
"type" : "collection",
"options" : {
},
"info" : {
"readOnly" : false,
"uuid" : UUID("d183c7e4-44bc-4656-b272-7ad707f8dc62")
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
}
}
]
Vidíme, že type pole obsahuje hodnotu collection , což znamená, že se jedná o sbírku.
Vypustit původní zobrazení
V této fázi máme nyní na výběr, zda původní pohled smažeme, nebo jej tam necháme.
Můžeme to zahodit takto:
db.v_pettypes.drop() Když nyní zkontrolujeme kolekce, můžeme vidět, že původní zobrazení je pryč a nová kolekce zůstává.
show collections Výsledek:
employees owners pets pettypes system.views