我有一个使用Spring Data MongoDB更新查询的问题。我检索一些对象的_id为Bigintger值。那么我想提出以下质疑:
Query query = new Query(Criteria.where("_id").is(id));
Update update = new Update();
update.set("version",version);
mongoOperations.updateFirst(query, update, Audit.class);
查询部分无法匹配任何文档,因为传递给is()
的id值必须以某种方式转换为ObjectId。我找不到这种转换的任何留档。会感激任何帮助。
p、 美国:SpringData Mongodb 1.2版
或者,您可以将“id”字段添加到集合类中,或者可能添加到基类中,并使用org对其进行注释。springframework。数据注释。Id,如下所示:
import org.springframework.data.annotation.Id;
public abstract class BaseDocument {
@Id
protected long id;
这将允许您执行表单的查询:
public boolean doesDocumentExist(Class clazz, long documentId) {
Query queryCriteria = new Query(Criteria.where("id").is(documentId));
return mongoTemplate.count(queryCriteria, clazz) == 1;
}
用'@id'注释您自己的id字段将把您的id存储为mongo objectId,从而避免您自己进行转换。
您可能想编写一个定制的Spring转换器BigInteger=
请参见此处的文档部分:http://static.springsource.org/spring-data/data-document/docs/current/reference/html/#d0e2670
------更新------
似乎这种转换器已经存在于Spring-Data-MongoDB库中:http://static.springsource.org/spring-data/data-document/docs/1.0.0.M1/api/org/springframework/data/document/mongodb/SimpleMongoConverter.ObjectIdToBigIntegerConverter.html
因此,您只需在Spring配置中指定它。
您也可以手动转换它:
ObjectId convertedId = new ObjectId(bigInteger.toString(16));
Query query = new Query(Criteria.where("_id").is(convertedId));
我使用Java8和以下spring规范: 我已经创建了以下转换器: 下列线路不起作用 dbo.put(“_id”,source.getid());**ObjectId objCompany=new ObjectId(Source.getCompany().ToString(16)); 谁能给我一些关于如何将BigInteger转换为ObjectId的指导或者建议一些不同的东西。
标题可能不太清楚,问题在这里 我正在执行此表单中的更新: 仅当没有具有相同用户ID的文档时才在数组中插入文档(解决方法是,唯一索引在数组中不起作用)。代码在mongo控制台上运行良好。从我的应用程序中,我使用以下内容: 如果作为“userid”,我使用的字符串不能是mongo ObjectId,那么这很好,但是如果我在示例中使用该字符串,则执行的查询如下所示(来自mongosniff): 该字符串
我在mongodb 4.0中使用Spring(boot)数据2.2.7。我已经设置了3个集合,试图通过聚合查找操作加入这些集合。 目录 股票 操作 目录 映射由 股票 映射由 productId字段引用目录集合中的_id字段 操作 映射由 组件ID字段指的是库存集合中的_id 我想查询操作或库存收集,以检索相应的节点或组件对象列表,该列表由Product.model字段(在目录集合中)排序。) 虽
假设我有一个用户类,它有一个对客户文档的手动引用: 两个身份我都要 保存用户文档时,“id”将转换为ObjectId,但是customerId将保存为字符串。我可以使用ObjectId类型的customerId,但我更希望将POJO作为字符串,并在保存/查询时将customerId自动转换为ObjectId。似乎没有任何行为类似于@Id的内置注释,但可以用于手动引用。我将如何着手创建一个,或者有更
问题内容: 是否有使用mongoose将字符串转换为node中的objectId的功能?该模式指定某个东西是一个ObjectId,但是当它从字符串保存时,mongo告诉我它仍然只是一个字符串。例如,对象的_id显示为。 问题答案: 您可以这样做:
新Gson()。toJson(新ObjectId()) 当我执行上述操作时,我得到的输出是 “_id”:{“_time”:1374347520,“_machine”:-1025067326,“_inc”:585905201,“_new”:false} 但事实上我希望它像 _id:{$id:51eae100c2e6b6c222ec3431} 这是常见的mongodb ID格式。Java中更可取的方法