आप डॉट नोटेशन का उपयोग करके उप-दस्तावेज़ "स्तर 1" में सरणी का संदर्भ दे सकते हैं। इसलिए, आपके जैसे नेस्टेड DBObjects बनाने के बजाय, आपको बस इसकी आवश्यकता है:
coll.update(entry, new BasicDBObject("$push", new BasicDBObject("level1.arr1", "val2")));
मैंने यह काम दिखाने के लिए एक परीक्षण लिखा:
@Test
public void shouldPushANewValueOntoANesstedArray() throws UnknownHostException {
final MongoClient mongoClient = new MongoClient();
final DBCollection coll = mongoClient.getDB("TheDatabase").getCollection("TheCollection");
coll.drop();
//Inserting the array into the database
final BasicDBList array = new BasicDBList();
array.add("val1");
final BasicDBObject entry = new BasicDBObject("level1", new BasicDBObject("arr1", array));
coll.insert(entry);
// results in:
// { "_id" : ObjectId("51a4cfdd3004a84dde78d79c"), "level1" : { "arr1" : [ "val1" ] } }
//do the update
coll.update(entry, new BasicDBObject("$push", new BasicDBObject("level1.arr1", "val2")));
// results in:
// { "_id" : ObjectId("51a4cfdd3004a84dde78d79c"), "level1" : { "arr1" : [ "val1", "val2" ] } }
}