如何使用jongo进行upsert?

时间:2016-12-12 14:46:50

标签: mongodb upsert jongo mongo-collection

我有一个用户表/集合,并且想要upsert用户 - 如果存在则更新用户,或者如果仍然不存在则添加新用户。结构如下。

“存在”,我的意思是有一些外部ID。在这种情况下,googleId

如何使用Jongo库?谢谢。

public class User {
    public String _id;
    public String email;
    public String givenName;
    public String familyName;
    public String googleId;
}

1 个答案:

答案 0 :(得分:3)

考虑让用户使用已经加载的googleId(通过google身份验证),并且我想使用Jongo将其插入mongoDB:

// Init
MongoClient mongoClient = new MongoClient("localhost", 27017);
DB db = mongoClient.getDB(DB_NAME);
Jongo jongo = new Jongo(db);
org.jongo.MongoCollection collectionJongo = jongo.getCollection(USER_COLLECTION_NAME);

// Upsert
String query = "{googleId: {$eq: #}}";
collectionJongo.update(query, user.googleId)
        .upsert()
        .with(user);
user = collectionJongo.find(query, user.googleId).as(User.class).next();
// Works only on insert. On update, the upsertedId is null.
//user._id = ((ObjectId) writeResult.getUpsertedId()).toHexString();