如何使用jongo做upsert? [英] How to do upsert using jongo?

查看:190
本文介绍了如何使用jongo做upsert?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个用户表/集合,并想添加一个用户-更新一个用户(如果存在)或添加一个新用户(如果不存在).下面的结构.

I have a users table/collection and would like to upsert a user - update a user if exists or add a new one if still not exists. Structure below.

存在"是指具有一些外部ID.在这种情况下,为googleId.

By "exists", I mean having some external ID. In this case, googleId.

如何使用Jongo库进行操作?谢谢.

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

推荐答案

考虑让用户使用已加载的googleId(已通过google auth),并且我想使用Jongo将其升级到mongoDB:

Considering having a user with an already loaded googleId (passed google auth), and I'd like to upsert it to mongoDB, using Jongo:

// 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做upsert?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆