2015-05-14 78 views
0

我想使用--upsert選項將導出的json文件導入到現有集合(同一個)中,但問題是我想只更新特定字段而不是所有數據。作爲一個例子,我已經收集名爲users,我把它出口到users.json,那麼我想導入此文件json到具有相同集合另一個數據庫,但我想只是進口領域,如emailusername & avatar,這樣我就可以保持原樣的其他數據沒有任何改變。我該如何做這樣的事情?你有任何想法或快速解決這個問題?從導出的mongo json文件導入到MongoDB中的特定字段

+0

嗨@Azzurio,你找到了一個不錯的解決方案?我也有同樣的問題。 Eric – elhostis

回答

0

使用Python

import pymongo 
import json 

conn = pymongo.MongoClient() 
collection = conn['db']['collection'] 

for doc in json.load(open('users.json')): 
    new_doc = {k: v for k, v in doc.iteritems() if k in ('email', 'username', 'avatar')} 
    collection.update({'_id': doc['_id']}, {'$set': new_doc}) 
0

限制你導出的字段可能是更好的方法。還有就是--fields flag available in mongoexport

mongoexport --fields foo, bar, baz 

將只出口_idfoobarbaz

+0

那麼我在導入文件時如何合併這些字段呢? – Azzurrio

0

這裏是一個例子。第一個請求導出一個JSON文件。 第二個請求使用合併選項導入文件。

mongoexport --db mydb --collection mycollection --fields field1,field2 --query "add a query if necessary" > test.json 

mongoimport --db mydb --collection mycollection --file test.json --mode merge