sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB - zkopírujte sbírku v jazyce Java bez opakování všech položek

V MongoDB 2.6 byl přidán operátor agregace $out, který zapisuje výsledky agregace do kolekce. To poskytuje jednoduchý způsob, jak vytvořit na straně serveru kopii všech položek v kolekci do jiné kolekce ve stejné databázi pomocí ovladače Java (použil jsem ovladač Java verze 2.12.0):

// set up pipeline
List<DBObject> ops = new ArrayList<DBObject>();
ops.add(new BasicDBObject("$out", "target")); // writes to collection "target"

// run it
MongoClient client = new MongoClient("host");
DBCollection source = client.getDB("db").getCollection("source")
source.aggregate(ops);

Verze s jednou vložkou:

source.aggregate(Arrays.asList((DBObject)new BasicDBObject("$out", "target")));

Podle dokumentů můžete pro velké datové sady (>100 MB) použít možnost allowDiskUse (Omezení agregační paměti), ačkoli jsem na tento limit nenarazil, když jsem jej spouštěl na sbírce> 2 GB, takže nemusí platit k tomuto konkrétnímu potrubí, alespoň ve verzi 2.6.0.



  1. Aktualizujte objekty vnořených polí na základě vlastnosti v MongoDB

  2. jak zacházet s vypršením platnosti relace na základě redis?

  3. Pipelining vs Batching v Stackexchange.Redis

  4. Jak získat ID objektu v PyMongu po vložení?