2016-12-12 59 views
0

我有一個用戶表/集合,並想插入用戶 - 如果存在更新用戶,或者如果仍然不存在,則添加新用戶。下面的結構。如何使用jongo做upsert?

「存在」,我的意思是有一些外部ID。在這種情況下,googleId

如何使用Jongo庫做到這一點?謝謝。

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

回答

0

考慮具有帶已加載googleId(谷歌傳遞AUTH)一個用戶,我想它UPSERT到MongoDB的,使用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();