java - 如何在 mongoDB 文档字段中保留特殊键并删除其中多余的键?

标签 java mongodb mongodb-query mongodb-java

假设我有 mongoDB 集合,其中包含如下文档

{
    "_id" : ObjectId("5cb2dd4d378a8e2484e7bb69"),
    "name":"ali",
    "creator" : {
        "name":"user1",
        "code":2,
        "type" : "desk",
        "type_id" : "desk::bb36640a-e384-45ec-aafa-ce71b724c389"
    },
     "creatorPosition" : {
        "name":"user2",
        "role":"admin",
        "type" : "position",
        "type_id" : "position::9f711bb3-3aad-4936-b75a-4ddd024b4bb1"
    },
     "creatorDetails" : {
        "name":"user1",
        "type" : "deskUserAssignment",
        "type_id" : "deskUserAssignment::dd46fa14-0fd3-43d7-8312-471bc253ee80"
    }
}

我想保留每个字段中的两个键值("type"、"type_id")并删除多余的键(例如 "name"、"code"、"role")

我可以在一个 mongo 查询中处理这个问题吗?

另外,我想用java写这段代码

最佳答案

最简单的方法是使用 MongoTemplate 的投影优惠

例如,使用 org.springframework.data.mongodb.core.query.Query 包含字段和org.springframework.data.mongodb.core.MongoTemplate用于检索结果:

Query query = new Query(); query.fields().include("creator.type").include("creator.type_id"); query.fields().include("creatorPosition.type").include("creatorPosition.type_id"); query.fields().include("creatorDetails.type").include("creatorDetails.type_id"); List<Document> documents = mongoTemplate.find(query, Document.class, "your_collection");

有关更多信息,请参阅本文:https://www.mkyong.com/mongodb/spring-data-mongodb-select-fields-to-return/

关于java - 如何在 mongoDB 文档字段中保留特殊键并删除其中多余的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58361432/

相关文章:

java - 从 RecyclerView 中删除与 List 不关联的 View

mongodb - MongoDB中的事务锁

node.js - 更新 Mongoose 中的对象会导致循环

mongodb - 蒙哥错误: cannot nest $ under $in

java - 时间序列预测 encog 3 java 从 CSV 读取

java - Spring ReST 返回标准

java - 通过 WTP 将依赖项目部署到 Tomcat

mongodb - 在 Docker 容器中保护 Mongo

java - 如何在mongoquery中展开两个数组

javascript - MongoDB:如何返回 JSON 中的特定字段和特定子文档