sql >> データベース >  >> NoSQL >> MongoDB

java用のmongoドライバーを使用してインターフェースオブジェクトのリストを保存する

    public class MongoInterfaceTest {
    
        private static MongoClient mongoClient;
    
        static {
            init();
        }
    
        public static void init() {
            try {
                ClassModel<User> userClassModel = ClassModel.builder(User.class).enableDiscriminator(true).build();
                ClassModel<JavaUser> javaUserClassModel = ClassModel.builder(JavaUser.class).enableDiscriminator(true).build();
                ClassModel<PythonUser> pythonUserClassModel = ClassModel.builder(PythonUser.class).enableDiscriminator(true).build();
                ClassModel<TestUser> testUserClassModel = ClassModel.builder(TestUser.class).enableDiscriminator(true).build();
    
                CodecRegistry pojoCodecRegistry = CodecRegistries.fromRegistries(
                        MongoClientSettings.getDefaultCodecRegistry(),
                        CodecRegistries.fromProviders(
                                PojoCodecProvider.builder()
                                        .register(
                                                userClassModel,
                                                javaUserClassModel,
                                                pythonUserClassModel,
                                                testUserClassModel
                                        )
                                        .automatic(true)
                                        .build()
                        )
                );
    
                mongoClient = MongoClients.create(
                        MongoClientSettings.builder()
                                .codecRegistry(pojoCodecRegistry)
                                .applyConnectionString(new ConnectionString(ApplictaionConfig.MONGODB_URL))
                                .applyToConnectionPoolSettings(builder -> {
                                    builder.minSize(10);
                                })
                                .build()
                );
            } catch (Exception e) {
                System.out.println("Connection mongodb failed");
                throw new RuntimeException();
            }
        }
    
        public static void main(String[] args) {
            MongoCollection<TestUser> collection = getMongoCollection("TestUser", TestUser.class);
    
            JavaUser javaUser = new JavaUser("a");
            PythonUser pythonUser = new PythonUser("b","1");
    
            TestUser testUser = new TestUser(javaUser.name, javaUser);
            insertOne(collection, testUser);
    
            testUser = new TestUser(pythonUser.name, pythonUser);
            insertOne(collection, testUser);
    
            Bson bson = Filters.and(Filters.eq("name", "a"));
            TestUser testUser1 = findFirst(collection, bson);
            System.out.println(testUser1);
            System.out.println(testUser1.user.dev());
    
            bson = Filters.and(Filters.eq("name", "b"));
            testUser1 = findFirst(collection, bson);
            System.out.println(testUser1);
            System.out.println(testUser1.user.dev());
        }
    
        /**
         * 获得collection对象
         */
        public static <T> MongoCollection<T> getMongoCollection(String collectionName, Class<T> tClass) {
            MongoDatabase mongoDatabase = mongoClient.getDatabase("kikuu");
            MongoCollection<T> collection = mongoDatabase.getCollection(collectionName, tClass);
            return collection;
        }
    
        public static <T> void insertOne(MongoCollection<T> collection, T document) {
            insertMany(collection, Lists.newArrayList(document));
        }
    
        public static <T> void insertMany(MongoCollection<T> collection, List<T> documents) {
            collection.insertMany(documents);
        }
    
        public static <T> T findFirst(MongoCollection<T> collection) {
            return (T) collection.find().first();
        }
    
        public static <T> T findFirst(MongoCollection<T> collection, Bson bson) {
            return (T) collection.find(bson).first();
        }
    
        public static interface User {
            String dev();
        }
    
        public static class JavaUser implements User{
            public String name;
    
            public JavaUser() {
            }
    
            public JavaUser(String name) {
                this.name = name;
            }
    
            @Override
            public String dev() {
                return "java";
            }
    
            @Override
            public String toString() {
                return "JavaUser{" +
                        "name='" + name + '\'' +
                        '}';
            }
        }
    
        public static class PythonUser implements User{
            public String name;
            public String age;
    
            public PythonUser() {
            }
    
            public PythonUser(String name, String age) {
                this.name = name;
                this.age = age;
            }
    
            @Override
            public String dev() {
                return "python";
            }
    
            @Override
            public String toString() {
                return "PythonUser{" +
                        "name='" + name + '\'' +
                        ", age='" + age + '\'' +
                        '}';
            }
        }
    
        public static class TestUser {
            public String name;
            public User user;
    
            public TestUser() {
            }
    
            public TestUser(String name, User user) {
                this.name = name;
                this.user = user;
            }
    
            @Override
            public String toString() {
                return "TestUser{" +
                        "name='" + name + '\'' +
                        ", user=" + user +
                        '}';
            }
        }
    }
    



    1. Mongoユーザー定義関数とMapReduce

    2. Mongoは最後のドキュメントを削除します

    3. MongoDBでのマルチドキュメントACIDトランザクションの概要とその使用方法

    4. $ inと$またはをMongoDBで相互に置き換えることはできますか?