首页 > 解决方案 > 在 protobuf java 中生成自定义 _id 以将其保存在 Mongodb 中

问题描述

我正在使用 protobuf java 生成要保存在 MongoDB 中的模型。我想生成一个自定义 _id 字段。

谁能让我如何实现这一目标?

我尝试添加 _id 字段,但它没有按预期工作。

syntax = "proto3";
message User {
    string first_name = 1;
    string last_name = 2;
    int64 dob = 3; // dob in the epoch format
    int64 phone = 4;
    string email = 5;
    string type = 6;
    string role = 7;
    string user_id = 8;
    bytes password = 9;
    bool is_active = 10;
    Meta meta = 11;
    AddViaEnum addedVia = 12;
    Address address = 13;
    int64 _id = 14;
}

请在下面找到连接到 MongoDB 并插入文档的代码。

@Slf4j
public class CrudDaoImpl implements CrudDao {

private MongoClient mongoClient;
private MongoDatabase mongoDatabase;

@Inject
public CrudDaoImpl(MongoClient mongoClient) {
    this.mongoClient = mongoClient;
    this.mongoDatabase = this.mongoClient.getDatabase("test");
    log.info("Connected to database");
}

@Override
public void saveDocument(String collectionName, String request) throws IOException {
    MongoCollection<Document> collection = mongoDatabase.getCollection(collectionName);
    collection.insertOne(Document.parse(request));
  }
}

我正在使用 google guice 进行依赖注入。初始化mongo客户端如下

@Provides
public MongoClient get() {
    return MongoClients.create("mongodb://localhost:27017");
}

使用上述设置通过 java 应用程序将文档插入 mongodb 后,mongo 将 ObjectID 创建为 _id。我想要自定义生成的 _id,但我不确定如何在 protobuf 中定义它。

标签: mongodbprotocol-buffersguicegrpc-java

解决方案


推荐阅读