从导出的mongo json文件导入到MongoDB中的特定字段
问题描述:
我想使用--upsert
选项将导出的json文件导入到现有集合(同一个)中,但问题是我想只更新特定字段而不是所有数据。作为一个例子,我已经收集名为users
,我把它出口到users.json
,那么我想导入此文件json
到具有相同集合另一个数据库,但我想只是进口领域,如email
,username
& avatar
,这样我就可以保持原样的其他数据没有任何改变。我该如何做这样的事情?你有任何想法或快速解决这个问题?从导出的mongo json文件导入到MongoDB中的特定字段
答
使用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})
答
限制你导出的字段可能是更好的方法。还有就是--fields
flag available in mongoexport
:
mongoexport --fields foo, bar, baz
将只出口_id
,foo
,bar
和baz
。
+0
那么我在导入文件时如何合并这些字段呢? – Azzurrio
答
这里是一个例子。第一个请求导出一个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
嗨@Azzurio,你找到了一个不错的解决方案?我也有同样的问题。 Eric – elhostis