Java Mongodb 简明教程

Java & MongoDB - Embedded Documents

要将包含嵌入式文档的文档插入集合中,您可以使用 DBObject / BasicDBObject 对象,如下所示 −

// Create an embedded document
BasicDBObject comment = new BasicDBObject();
comment.put("user", "User1");
comment.put("message", "My First Comment");
comment.put("dateCreated", "20/2/2020");
comment.put("like", "0");

// create an array
List<String> tags = new ArrayList<String>();
tags.add("mongodb");
tags.add("database");
tags.add("NoSQL");


// add array and embedded documents
Document document = new Document("title", "MongoDB Overview")
   .append("tags",tags)
   .append("comment", comment);

Example

以下是用来插入包含嵌入式文档的文档并对其进行显示的代码段 −

import java.util.ArrayList;
import java.util.List;

import org.bson.Document;

import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.client.FindIterable;
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.Filters;

public class Tester {
   public static void main(String[] args) {
      // Creating a Mongo client
      MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
      MongoDatabase database = mongoClient.getDatabase("myDb");

      // Create the collection
      database.createCollection("post");

      MongoCollection<Document> collection = database.getCollection("post");
      List<String> tags = new ArrayList<String>();
      tags.add("mongodb");
      tags.add("database");
      tags.add("NoSQL");

      BasicDBObject comment1 = new BasicDBObject();
      comment1.put("user", "User1");
      comment1.put("message", "My First Comment");
      comment1.put("dateCreated", "20/2/2020");
      comment1.put("like", "0");

      BasicDBObject comment2 = new BasicDBObject();
      comment2.put("user", "User2");
      comment2.put("message", "My Second Comment");
      comment2.put("dateCreated", "20/2/2020");
      comment2.put("like", "0");

      List<DBObject> comments = new ArrayList<DBObject>();
      comments.add(comment1);
      comments.add(comment2);

      Document document = new Document("title", "MongoDB Overview")
         .append("description", "MongoDB is no SQL database")
         .append("by", "tutorials point")
         .append("url", "http://www.tutorialspoint.com")
         .append("tags",tags)
         .append("comments", comments);

      collection.insertOne(document);

      FindIterable<Document> documents = collection.find(Filters.eq("title","MongoDB Overview"));

      for (Document doc : documents) {
         System.out.println(doc);
      }
   }
}

现在,我们按照以下步骤编译并运行上述程序。

$javac Tester.java
$java Tester

在执行上述程序时,您将得到以下输出。

Output

Document{{_id=60b7ab7614bd6b4a14b46d47, title=MongoDB Overview,
   description=MongoDB is no SQL database, by=tutorials point,
   url=http://www.tutorialspoint.com, tags=[mongodb, database, NoSQL],
   comments=[Document{{user=User1, message=My First Comment,
   dateCreated=20/2/2020, like=0}}, Document{{user=User2, message=My Second Comment,
   dateCreated=20/2/2020, like=0}}]
}}