如何使用 MongoDB 更新值
How to Update a Value with MongoDB
我想给用户每做一件事加1分。所以,我这样做是为了在找不到用户时创建用户并给他 1 分。我被困在不知道如何更新值和加 1 分的地方。
//Add One Point
Document memberdoc = new Document("Username", event.getAuthor().getName());
Document found = (Document) collection.find(memberdoc).first();
if (found == null){
memberdoc.append("Points", 1);
memberdoc.append("UserID", event.getAuthor().getId());
collection.insertOne(memberdoc);
membersDataHashMap.put(event.getAuthor().getId(), new MembersData(event.getAuthor().getName(), event.getAuthor().getId(), 1));
}else{
String id = found.getString("UserID");
int points = found.getInteger("Points");
membersDataHashMap.put(event.getAuthor().getId(), new MembersData(event.getAuthor().getId(),id,points + 1));
}
//End
您可以使用 $inc 来增加值。
您需要将 $inc
运算符与 db.collection.
的 updateOne
方法一起使用 有关详细信息,请查看 official documentation of mongodb
在您的情况下,您可以在 else 条件下使用它,如下所示:
//Add One Point
Document memberdoc = new Document("Username", event.getAuthor().getName());
Document found = (Document) collection.find(memberdoc).first();
if (found == null){
memberdoc.append("Points", 1);
memberdoc.append("UserID", event.getAuthor().getId());
collection.insertOne(memberdoc);
membersDataHashMap.put(event.getAuthor().getId(), new MembersData(event.getAuthor().getName(), event.getAuthor().getId(), 1));
}else{
String id = found.getString("UserID");
int points = found.getInteger("Points");
collection.updateOne(
eq("UserID", found.getString("UserID")),
new Document("$inc", new Document("Points", 1))
);
membersDataHashMap.put(event.getAuthor().getId(), new MembersData(event.getAuthor().getId(),id,points + 1));
}
//End
仅关注以下部分:
collection.updateOne(
eq("UserID", found.getString("UserID")),
new Document("$inc", new Document("Points", 1))
);
这将找到匹配的用户并将列 Points
递增 1。希望这会解决您的问题。
我想给用户每做一件事加1分。所以,我这样做是为了在找不到用户时创建用户并给他 1 分。我被困在不知道如何更新值和加 1 分的地方。
//Add One Point
Document memberdoc = new Document("Username", event.getAuthor().getName());
Document found = (Document) collection.find(memberdoc).first();
if (found == null){
memberdoc.append("Points", 1);
memberdoc.append("UserID", event.getAuthor().getId());
collection.insertOne(memberdoc);
membersDataHashMap.put(event.getAuthor().getId(), new MembersData(event.getAuthor().getName(), event.getAuthor().getId(), 1));
}else{
String id = found.getString("UserID");
int points = found.getInteger("Points");
membersDataHashMap.put(event.getAuthor().getId(), new MembersData(event.getAuthor().getId(),id,points + 1));
}
//End
您可以使用 $inc 来增加值。
您需要将 $inc
运算符与 db.collection.
的 updateOne
方法一起使用 有关详细信息,请查看 official documentation of mongodb
在您的情况下,您可以在 else 条件下使用它,如下所示:
//Add One Point
Document memberdoc = new Document("Username", event.getAuthor().getName());
Document found = (Document) collection.find(memberdoc).first();
if (found == null){
memberdoc.append("Points", 1);
memberdoc.append("UserID", event.getAuthor().getId());
collection.insertOne(memberdoc);
membersDataHashMap.put(event.getAuthor().getId(), new MembersData(event.getAuthor().getName(), event.getAuthor().getId(), 1));
}else{
String id = found.getString("UserID");
int points = found.getInteger("Points");
collection.updateOne(
eq("UserID", found.getString("UserID")),
new Document("$inc", new Document("Points", 1))
);
membersDataHashMap.put(event.getAuthor().getId(), new MembersData(event.getAuthor().getId(),id,points + 1));
}
//End
仅关注以下部分:
collection.updateOne(
eq("UserID", found.getString("UserID")),
new Document("$inc", new Document("Points", 1))
);
这将找到匹配的用户并将列 Points
递增 1。希望这会解决您的问题。