您可以使用$push运算符插入新的列表项。
您可以在 shell 上运行以下命令来添加新的列表项。
db.myObject.update({"myId" : "A String ID that i created"},{$push:{myList: {myString:"new string", myInteger:9003}}})
您可以使用 Java 驱动程序添加列表项,如下所示。
DBCollection coll = db.getCollection("myObject");
DBObject query = new BasicDBObject("myId", "A String ID that i created");
DBObject listItem = new BasicDBObject();
listItem.put("myString", "my new string");
listItem.put("myInteger", 9003);
DBObject updateObj = new BasicDBObject("myList", listItem);
coll.update(query, new BasicDBObject("$push", updateObj));
您可以在 shell 上按如下方式获取单个元素。
db.myObject.find({"myList.myInteger" : 9003}, {"myList.$" : 1})
从 Java 驱动程序中,您可以运行相同的代码,如下所示:
DBCursor cur = coll.find(new BasicDBObject("myList.myInteger", 9003), new BasicDBObject("myList.$", 1));
您可以按如下方式删除对象:
db.nested.update({"myId" : "A String ID that i created"},{$pull:{myList: {myString:"new string", myInteger:9003}}})
在 Java 中,你可以这样做:
DBCollection coll = db.getCollection("myObject");
DBObject query = new BasicDBObject("myId", "A String ID that i created");
DBObject listItem = new BasicDBObject();
listItem.put("myString", "my new string");
listItem.put("myInteger", 9003);
DBObject updateObj = new BasicDBObject("myList", listItem);
coll.update(query, new BasicDBObject("$pull", updateObj));
PS:目前无法更新数组中的所有项目。Jira 上有一个未解决的问题。您可以从JIRA-1243检查它