2015-05-14 74 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