我有mongo db調用test
和在這個數據庫兩個集合collection1
和collection1_backup
。 如何用collection1_backup
的數據替換collection1
的內容。mongo從一個集合複製到另一個(在相同的分貝)
回答
已經做到了這一點,最好的辦法(考慮到集合的名稱與_backup
結束)可能是有使用mongorestore:http://docs.mongodb.org/manual/reference/mongorestore/
然而,在這種情況下,它依賴。如果集合unsharded可以使用renameCollection
(http://docs.mongodb.org/manual/reference/command/renameCollection/),也可以使用(在JavaScript代碼)的更多的手工方法:
db.collection1.drop(); // Drop entire other collection
db.collection1_backup.find().forEach(function(doc){
db.collection1.insert(doc); // start to replace
});
這些都是這樣做的最常用的方法。
也有用: 到收藏導出到JSON文件
mongoexport --collection collection1_backup --out collection1.json
從JSON文件導入集合
mongoimport --db test --collection collection1 --file collection1.json
導入從備份/轉儲文件單個集合一個需要轉換* .bson file to * .json 使用
bsondump collection1_backup.bson > collection1_backup.json
使用Java驅動程序
嘗試以下之一:
public void copyTo(String db,String sourceCollection,String destinationCollection,int limit) throws
UnknownHostException {
MongoClient mongo = new MongoClient("localhost", 27017);
DB database = mongo.getDB(db);
DBCollection collection = database.getCollection(sourceCollection);
DBCursor dbCursor = collection.find().limit(limit);
List<DBObject> list = dbCursor.toArray();
DBCollection destination = database.getCollection(destinationCollection);
destination.insert(list, WriteConcern.NORMAL); //WRITE CONCERN is based on your requirment.
}
更好的辦法是使用.toArray()
db.collection1.drop(); // Drop entire other collection
// creates an array which can be accessed from "data"
db.collection1_backup.find().toArray(function(err, data) {
// creates a collection and inserting the array at once
db.collection1.insert(data);
});
您可以使用簡單的命令來備份MongoDB的收藏
db.sourceCollectionName.copyTo('targetCollectionName')
您的targetCollectionName必須處於Single(')或Double(「)報價
注:
的db.collection.copyTo()方法使用eval命令內部。由於 的結果,db.collection.copyTo()操作採用全局鎖 ,該鎖阻止所有其他讀取和寫入操作,直到 db.collection.copyTo()完成。
這不適用於Sharded集合,順便說一句 – oshaiken
- 1. 複製列表中的一個集合到另一個集合
- 2. 複製存儲過程從一個分貝另一個在PHP
- 3. 將數據從一個集合複製到另一個集合C#
- 4. 從另一個集合中匹配的一個mongo集合中刪除文檔
- 5. 如何將一個集合從一個mongodb複製到另一個?
- 6. 將數據字段從一個mongo集合複製到另一個,在db服務器上
- 7. 我怎樣才能從一個集合複製模型到另一個在Backbone.js
- 8. 將TFS集合複製到另一個集合
- 9. 一個列表的拷貝複製到另一個使用LINQ
- 10. 從一個RadComboBox複製項目的子集到另一個
- 11. 從一個arrayList複製到另一個
- 12. 將SVN從一個分支複製到另一個分支
- 13. Git從一個分支複製到另一個分支
- 14. 只複製從一個JSON到另一個JSON的相同屬性的值
- 15. LINQ查詢從一個集合到另一個集合
- 16. 如何將一個表從一個hbase集羣複製到另一個集羣?
- 17. .net集合:如何將對象從一個集合複製到另一個集合?
- 18. 配置一個Mongo副本集只複製某些集合
- 19. 拷貝一個文件到另一個複製
- 20. 從一個Magentoinstall導出/複製屬性集到另一個?
- 21. 將數據從一個CockroachDB集羣複製到另一個
- 22. 將行從一個表複製到另一個具有相同結構的行
- 23. 將值從一個表複製到另一個表中相同的ID
- 24. 將PHAsset從一個相冊移動/複製到另一個
- 25. 將mongo db oplog複製到另一個mongo db
- 26. 將文件從一個TFS項目集合複製到另一個
- 27. 在mongo中複製同一集合中的文檔
- 28. SQL服務器 - 複製存儲過程從一個分貝另一個
- 29. 複製從一個NSMutableArray的內容複製到另一個
- 30. 將前1000個文檔複製到另一個集合
一般來說,複製集合時最好使用'mongodump'和'mongorestore',因爲將文檔轉換爲JSON並返回可能會影響[數據類型保真度](http://docs.mongodb.org/manual /管理/進出口/#數據類型保真度)。 BSON中存在一些數據類型,它們可以具有[JSON中的不同表示形式](http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON),其中沒有嚴格的JSON等效。根據您的數據,使用'mongoimport' /'mongoexport'也許可以,但這是一個需要注意的重要警告。 – Stennie
@Stennie注意到做一個mongodump/mongorestore會保留索引也很重要。因此,如果您嘗試在集合之間複製文檔,您將無法恢復。 如果您要在集合之間複製文檔,應使用mongoexport和mongoimport。 – ivandov
@ivandov你可以用'mongorestore --noIndexRestore'跳過重新創建索引(除了所需的_id'索引)。請注意,'mongorestore'(如MongoDB 3.4)只能插入;如果存在具有相同'_id'的文檔,則不會更新或替換它。 'mongoimport'工具支持upserts(在3.4中,合併),但是使用文本格式而不是MongoDB的本地BSON格式。如果您想在MongoDB部署之間重新創建數據(以及可選的集合元數據),那麼'mongodump'和'mongorestore'仍然是推薦的選項。 – Stennie