【问题标题】:How to do upsert using jongo?如何使用 jongo 进行 upsert?
【发布时间】:2016-12-12 14:46:50
【问题描述】:

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

“存在”是指拥有一些外部 ID。在这种情况下,googleId

我怎样才能使用 Jongo 库?谢谢。

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

【问题讨论】:

    标签: mongodb upsert jongo mongo-collection


    【解决方案1】:

    考虑到有一个用户已经加载了 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();
    

    【讨论】:

    • 我不知道这是如何或为什么被否决的 - Jongo 是我遇到过的最糟糕的记录框架,这非常有帮助。
    猜你喜欢
    • 2011-11-02
    • 1970-01-01
    • 2013-06-23
    • 2015-03-13
    • 2012-07-17
    • 1970-01-01
    • 2021-10-07
    • 2021-11-13
    相关资源
    最近更新 更多