import com.mongodb.MongoClientSettings;
|
import com.mongodb.client.MongoClient;
|
import com.mongodb.client.MongoClients;
|
import com.mongodb.client.MongoCollection;
|
import com.mongodb.client.MongoDatabase;
|
import com.mongodb.client.model.Updates;
|
import org.bson.BsonDocument;
|
import org.bson.codecs.configuration.CodecRegistry;
|
import org.bson.codecs.pojo.PojoCodecProvider;
|
import org.bson.conversions.Bson;
|
import org.bson.types.ObjectId;
|
|
import java.util.Collections;
|
|
import static com.mongodb.client.model.Filters.eq;
|
import static org.bson.codecs.configuration.CodecRegistries.fromProviders;
|
import static org.bson.codecs.configuration.CodecRegistries.fromRegistries;
|
|
public class Main {
|
|
public static void main(String[] args) throws InterruptedException {
|
|
CodecRegistry codecRegistry = fromRegistries(MongoClientSettings.getDefaultCodecRegistry(),
|
fromProviders(PojoCodecProvider.builder().automatic(true).build()));
|
|
MongoClient mongoClient = MongoClients.create();
|
MongoDatabase testDatabase = mongoClient.getDatabase("test").withCodecRegistry(codecRegistry);
|
testDatabase.drop();
|
|
MongoCollection<HDUser> userCollection = testDatabase.getCollection("user", HDUser.class);
|
ObjectId uid = new ObjectId("000000000000000000000001");
|
userCollection.insertOne(new HDUser().setId(uid).setContents(Collections.emptyList()));
|
|
Content c = new Content().setId(new ObjectId("000000000000000000000000")).setMetadata(new Metadata().setName("name").setSize(42L));
|
Bson addContent = Updates.addToSet("contents", c); // Note: contents not content
|
|
Bson updateContentOrder = Updates.addToSet("content_order", c.getId()); // Note: This field is not listed in the POJO!
|
Bson combined = Updates.combine(addContent, updateContentOrder);
|
|
System.out.println(combined.toBsonDocument(BsonDocument.class, codecRegistry));
|
|
userCollection.updateOne(eq("_id", uid), Updates.combine(addContent, updateContentOrder));
|
|
System.out.println(userCollection.find().first());
|
System.out.println(testDatabase.getCollection("user").find().first().toJson());
|
}
|
}
|