我想從單個集合中導出單個字段。 像集合名稱是產品和字段名是標籤。
所有標籤將創建新的集合。我試過這個命令:如何從MongoDB中的集合中導出單個字段?
mongodump --host 192.168.1.46 --port 27017 --db myDb --collection products --fields tag -o bson --out C:\Users\Desktop\tag
我想從單個集合中導出單個字段。 像集合名稱是產品和字段名是標籤。
所有標籤將創建新的集合。我試過這個命令:如何從MongoDB中的集合中導出單個字段?
mongodump --host 192.168.1.46 --port 27017 --db myDb --collection products --fields tag -o bson --out C:\Users\Desktop\tag
mongodump不支持所選字段的備份。但是你可以使用mongoexport/mongoimport備份選定的領域:
mongoexport -c test --db testing -f key --out dump.json
對不起,我的 –
是什麼意思,如果我在同一個命令中使用mongoexport而不是mongodump,那麼它也不起作用。 –
所以讓我們在我們收集將部分產品開始:
db.products.insertMany([
{ name: 'TV', tags: ['livingroom', 'electronics']},
{ name: 'Radio', tags: ['bedroom', 'electronics']},
{ name: 'Computer', tags: ['bedroom', 'electronics']}
]);
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("586bae0ec5a9a94b2674943d"),
ObjectId("586bae0ec5a9a94b2674943e"),
ObjectId("586bae0ec5a9a94b2674943f")
]
}
現在我們可以寫一個簡單的aggreation查詢去,雖然所有的文件
db.products.aggregate([
{$unwind: '$tags'},
{$group: {_id: '$tags' }},
{$out: 'productTags'}
]);
的{$unwind: '$tags'}
將在解構爲每個標籤的文檔標籤陣列領域。 然後{$group: {_id: '$tags' }}
將分組每個項目併爲每個標籤創建一個新文檔。 然後,{$out: 'productTags'}
將爲我們創建一個包含文檔輸出的productTags集合。
現在如果我們查詢productTags
集合,我們將得到以下的輸出:
> db.productTags.find()
{ "_id" : "bedroom" }
{ "_id" : "electronics" }
{ "_id" : "livingroom" }
有你那'products'集合中有你的文件的例子嗎? –
你能澄清一下'所有的標籤都會創建新的集合嗎?'的含義嗎?你只是想找到所有的標籤,並在同一個數據庫中創建一個新的集合? –
你好凱文,我只是想從一個集合中導出一個文件,並想從這些導出的字段創建一個新的集合。例如(如果產品集合的標籤字段是字符串,我只想從產品集合中導出所有標籤,然後導出標籤將創建一個新的集合,如標籤),希望您現在可以理解。 –