使用 MongoDB Java 将新的 object 推入现有文档的数组
Push new object into an array of an existing document using MongoDB Java
我正在尝试学习 MongoDB 并想知道如何将 POJO 插入现有的 collection。我的 collection 如下所示。
{
"_id" : ObjectId("5e930d68618c45b052492407"),
"game" : {
"team1" : [
{ "player" : "john", "age" : 25 },
{ "player" : "mick", "age" : 25 }
],
"team2" : [
{ "player" : "john", "age" : 25 },
{ "player" : "john", "age" : 25 }
]
}
}
现在我希望能够在 "team1" 中插入一个新播放器,预期的输出应该如下所示,
{
"_id" : ObjectId("5e930d68618c45b052492407"),
"game" : {
"team1" : [
{ "player" : "john", "age" : 25 },
{ "player" : "mick", "age" : 23 },
{ "player" : "tom", "age" : 22 } //newly inserted
],
"team2" : [
{ "player" : "tony", "age" : 26 },
{ "player" : "bruce", "age" : 24 }
]
}
}
我在java中使用过POJO,我的代码如下,
Player object= new Player();
newPlayer.setPlayer("tom");
newPlayer.setAge(22);
BasicDBObject setQuery = new BasicDBObject();
setQuery.append("$push", object);
collection.updateOne(Filters.and(Filters.eq("_id", "5e930d68618c45b052492407"), Filters.eq("game.team1")), setQuery);
但上面的方法似乎不起作用,请求帮助我解决这个问题。如果您提前发现我的question.Thanks有什么错误,请见谅。
好的,我自己找到了解决方案,对于那些在这里遇到同样问题的人,这是我找到的解决方案。
BasicDBObject query = new BasicDBObject();
query.put("_id", valueofId);
BasicDBObject push_data = new BasicDBObject("$push", new BasicDBObject("game.team1", object));
collection.findOneAndUpdate(query, push_data);
您可以使用以下代码将新的子文档(或对象)添加到数组中。这使用 Updates 构建器 class:
Document newPlayer = new Document("player", "tom").append("age", 22);
Bson update = Updates.push("game.team1", newPlayer);
Bson filter = Filters.eq("_id", new ObjectId("5e930d68618c45b052492407"));
UpdateResult result = collection.updateOne(filter, update);
我正在尝试学习 MongoDB 并想知道如何将 POJO 插入现有的 collection。我的 collection 如下所示。
{
"_id" : ObjectId("5e930d68618c45b052492407"),
"game" : {
"team1" : [
{ "player" : "john", "age" : 25 },
{ "player" : "mick", "age" : 25 }
],
"team2" : [
{ "player" : "john", "age" : 25 },
{ "player" : "john", "age" : 25 }
]
}
}
现在我希望能够在 "team1" 中插入一个新播放器,预期的输出应该如下所示,
{
"_id" : ObjectId("5e930d68618c45b052492407"),
"game" : {
"team1" : [
{ "player" : "john", "age" : 25 },
{ "player" : "mick", "age" : 23 },
{ "player" : "tom", "age" : 22 } //newly inserted
],
"team2" : [
{ "player" : "tony", "age" : 26 },
{ "player" : "bruce", "age" : 24 }
]
}
}
我在java中使用过POJO,我的代码如下,
Player object= new Player();
newPlayer.setPlayer("tom");
newPlayer.setAge(22);
BasicDBObject setQuery = new BasicDBObject();
setQuery.append("$push", object);
collection.updateOne(Filters.and(Filters.eq("_id", "5e930d68618c45b052492407"), Filters.eq("game.team1")), setQuery);
但上面的方法似乎不起作用,请求帮助我解决这个问题。如果您提前发现我的question.Thanks有什么错误,请见谅。
好的,我自己找到了解决方案,对于那些在这里遇到同样问题的人,这是我找到的解决方案。
BasicDBObject query = new BasicDBObject();
query.put("_id", valueofId);
BasicDBObject push_data = new BasicDBObject("$push", new BasicDBObject("game.team1", object));
collection.findOneAndUpdate(query, push_data);
您可以使用以下代码将新的子文档(或对象)添加到数组中。这使用 Updates 构建器 class:
Document newPlayer = new Document("player", "tom").append("age", 22);
Bson update = Updates.push("game.team1", newPlayer);
Bson filter = Filters.eq("_id", new ObjectId("5e930d68618c45b052492407"));
UpdateResult result = collection.updateOne(filter, update);