当前位置: 首页 > 知识库问答 >
问题:

Spring数据MongoDb-字符串的手动引用ObjectId

南门宇
2023-03-14

假设我有一个用户类,它有一个对客户文档的手动引用:

public class User(){
    @Id
    public String id;
    public String name;
    public String customerId;
}

两个身份我都要

保存用户文档时,“id”将转换为ObjectId,但是customerId将保存为字符串。我可以使用ObjectId类型的customerId,但我更希望将POJO作为字符串,并在保存/查询时将customerId自动转换为ObjectId。似乎没有任何行为类似于@Id的内置注释,但可以用于手动引用。我将如何着手创建一个,或者有更好的解决方案吗?我读过上面的一些转换器,但我不想将整个POJO重新映射到DBObject。

如有任何建议,将不胜感激。

共有1个答案

陈铭晨
2023-03-14

当您获得客户数据时,您必须自己创建objectId。

Db.Customer.find({"_id": new ObjectId("$value eFromUserTable")});

因此,在Spring Java中,您将:

ObjectId objId = new ObjectId("$valueFromUserTable");
Query query = new Query(Criteria.where("_id").is(objId));
Customer customer = super.mongoOps.find(query, Customer.class);

 类似资料:
  • 标题可能不太清楚,问题在这里 我正在执行此表单中的更新: 仅当没有具有相同用户ID的文档时才在数组中插入文档(解决方法是,唯一索引在数组中不起作用)。代码在mongo控制台上运行良好。从我的应用程序中,我使用以下内容: 如果作为“userid”,我使用的字符串不能是mongo ObjectId,那么这很好,但是如果我在示例中使用该字符串,则执行的查询如下所示(来自mongosniff): 该字符串

  • 我在mongodb 4.0中使用Spring(boot)数据2.2.7。我已经设置了3个集合,试图通过聚合查找操作加入这些集合。 目录 股票 操作 目录 映射由 股票 映射由 productId字段引用目录集合中的_id字段 操作 映射由 组件ID字段指的是库存集合中的_id 我想查询操作或库存收集,以检索相应的节点或组件对象列表,该列表由Product.model字段(在目录集合中)排序。) 虽

  • 每当我在这个集合中保存一些数据时,我就声明了一个类LoanDetails和一个包含BigDecimal类型loanAmount的字段 它以字符串形式存储在mongo db数据库中 我试图在loanAmount字段上添加注释

  • 我有一个叫酒吧的收藏。每个文档都包含一个名为cocktails的字符串数组,以便: 使用Spring mongodb,我将删除每个“sexontheBeach”,以便: 泰提前。

  • 我想转换一个组织。阿帕奇。火花sql。数据框到组织。阿帕奇。火花rdd。RDD[(字符串,字符串)]在数据块中。有人能帮忙吗? 背景(也欢迎使用更好的解决方案):我有一个Kafka流,它(经过一些步骤)变成了2列数据帧。我想将其放入Redis缓存,第一列作为键,第二列作为值。 更具体地说,输入的类型是:。我尝试将以下内容放入Redis: 错误消息如下所示: 我已经尝试过一些想法(比如函数、rdd)

  • 问题内容: 我曾经在JavaScript中这样做: Swift没有此功能,如何做类似的事情? 问题答案: 编辑/更新: Xcode 11•Swift 5.1或更高版本 用法: 不区分大小写的样本 正则表达式样本