天道酬勤,学无止境

spring-data-mongodb

Combining Spring-Data for MongoDB and ElasticSearch

问题 我正在努力 @org.springframework.data.mongodb.core.mapping.Document(collection = "goal") @org.springframework.data.elasticsearch.annotations.Document(indexName = "goal") public class Goal implements Serializable { ....} 但这给了我: Error creating bean with name 'goalRepository': Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException: No property insert found for type Goal! -> 顺便说一句:只要我将名为“插入”的属性添加到目标或从目标中删除弹性搜索注释,该错误就会消失。 目标存储库是: package org.jhipster.mongo.repository; import org.jhipster.mongo.domain.Goal; import org.springframework.data

2022-07-11 09:48:20    分类:技术分享    java   spring   mongodb   spring-data-mongodb   spring-data-elasticsearch

how to use spel to represent $cond of mongo

问题 我有一个包含如下文件的集合 { "_id" : ObjectId("5946360fdab24b1d05fac7e6"), "name" : "aaa", "createdAt" : NumberLong("1497773583563"), "segmentedStatus" : 0 } 我想统计segmentedStatus = 1的文档数量, db.foo.aggregate( {$project: {_id:0, segmentedCount:{$cond: [{$eq:["$segmentedStatus",1]}, 1, 0]} } }, {$group: {_id:null, count:{$sum:"$segmentedCount"}}} ) 在春季数据蒙戈 Aggregation aggregation = newAggregation(project().and("segmentedCount").applyCondition(when(where("segmentedStatus").is(1)).then(1).otherwise(0)), group().sum("segmentedCount").as("count") ); 但是我觉得上面的方式有点麻烦所以想知道在这种情况下是否可以使用spel,我尝试了下面的方式 Aggregation

2022-05-17 04:58:16    分类:技术分享    spring-data-mongodb   spring-el

how to use $lookup stage in java with spring data mongodb? [duplicate]

问题 这个问题在这里已经有了答案: 在 mongodb 聚合中查找2 个答案 4年前关闭。 直到最后一个版本的spring,我已经看到很多堆栈溢出问题,这表明spring-data-mongodb中不支持此操作在新的spring-data-mongodb 1.10.0中是否支持此操作 db.orders.aggregate([ { $lookup: { from: "inventory", localField: "item", foreignField: "sku", as: "inventory_docs" } } ]) 回答1 LookupOperation lookupOperation = LookupOperation.newLookup(). from("inventory"). localField("item"). foreignField("sku"). as("inventory_docs"); Aggregation aggregation = Aggregation.newAggregation(lookupOperation); List<BasicDBObject> results = mongoOperations.aggregate(aggregation, "orders", BasicDBObject.class)

2022-05-16 05:07:12    分类:技术分享    java   mongodb   spring-data-mongodb

How can I do a insert a new Date with Spring Data MongoDB?

问题 如何使用 Spring Data MongoDB 插入新日期? 我目前正在诉诸 User = new User(); user.setCreationDate(new Date()); mongoOperation.save(user); 来解决问题,但最终结果是用户保存的是运行代码的服务器的当前时间,而不是运行数据库的服务器的当前时间。 由于此代码将在多个服务器上的多个实例中并行运行,并且服务器的时间可能略有不同,因此我想复制与执行相同的行为 db.users.insert({'creationDate': new ISODate()}) 直接在 mongo shell 中。 如何使用 Sprint-Data-MongoDB 实现这一点? 回答1 您可以通过使用 spring-data 审计功能来始终如一地实现这一点 为了启用审计,我们需要在 Spring 配置中添加<mongo:auditing/>标签。 审计让你以声明方式告诉 Spring 存储: 创建文档的日期: @CreatedDate 上次更新文档的日期: @LastModifiedDate 创建文档的用户: @CreatedBy 完成最近更新的用户: @LastModifiedBy 当前文档版本: @Version 对于我们的用例,如果我们结合 javax.persistence jar 日期样式和

2022-05-12 09:08:25    分类:技术分享    java   spring   mongodb   spring-data   spring-data-mongodb

How to get distance - MongoDB Template Near function

问题 Criteria criteria = new Criteria("coordinates") .near(new Point(searchRequest.getLat(),searchRequest.getLng())); Query query = new Query(); query.addCriteria(criteria); query.addCriteria(criteriaName); query.limit(5); List<Place> ls = (List<Place>) mongoTemplate.find(query, Place.class); 回答1 您可以使用 geoNear 聚合来做到这一点。 在 spring-data-mongodb GeoNearOperation 中表示此聚合。 扩展或创建继承Place类,其中包含您希望获得距离信息的字段(继承示例): public class PlaceWithDistance extends Place { private double distance; public double getDistance() { return distance; } public void setDistance(final double distance) { this.distance = distance

2022-05-12 02:47:04    分类:技术分享    spring   mongodb   spring-boot   spring-data-mongodb   spring-mongodb

mongotemplate aggregation with unique results

问题 我正在使用 mongotemplate ,我的集合如下所示: { "_id": "theid", "tag": "taga", "somefield": "some value", "fieldC": { "anotherfielad": "more data", "an_array": [ { "a": "abc", "b": 5 }, { "a": "bca", "b": 44 }, { "a": "ddd", "b": 21 } ] } } { "_id": "anotherid", "tag": "taga", "somefield": "some other value", "fieldC": { "anotherfielad": "other more data", "an_array": [ { "a": "ccc", "b": 6 }, { "a": "abc", "b": 99 }, { "a": "ddd", "b": 21 } ] } } 在这种情况下,我需要从 $fieldC.an_array.a 获得唯一结果: ("abc","bca","ddd","ccc") 此查询有效: [ { "$match": { "tag": "taga" } }, { "$unwind": "fieldC.an_array" }, { "$group": { "_id"

2022-05-09 16:07:40    分类:技术分享    mongodb   mongodb-query   aggregation-framework   spring-data-mongodb

MongoDB Spring Data Criteria Not operator

问题 我有以下代码使用spring data mongodb(版本1.2.3.RELEASE)在mongo db中搜索 Criteria searchCriteria = Criteria.where("NAME").is("TestName") .and("ID").is("TestID").not().and("Age").is("23"); 我得到了以下查询(没有非运算符) Query: { "NAME" : "TestName" , "ID" : "TestID", "Age" : "23" } 我期待以下查询 Query: { "NAME" : "TestName" , "$not" : { "ID" : "TestID"}, "Age" : "23" } 我究竟做错了什么 ? 任何帮助是极大的赞赏。 谢谢 回答1 我用'ne'代替。 Criteria searchCriteria = Criteria.where("NAME").is("TestName").and("ID").ne("TestID").and("Age").is("23"); Mongo db 'not' 是一个逻辑运算符。 http://docs.mongodb.org/manual/reference/operator/query/not/ 回答2 根据文档, not()正在影响紧随其后的子句。

2022-05-06 14:02:04    分类:技术分享    spring-data-mongodb

MongoDB -Consider defining a bean of type 'org.springframework.data.mongodb.repository.query.MongoEntityInformation' in your configuration

My Student entity class package com.example.entity; import java.io.Serializable; import javax.persistence.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "student") public class StudentMongo implements Serializable { private static final long serialVersionUID = 8764013757545132519L; @Id private Long id; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } } My Repository package com.example.repository; import

2022-05-03 05:35:52    分类:问答    spring   mongodb   spring-boot   spring-data-mongodb

How to prevent Spring Data MongoDB from mapping id field as object id?

问题 回答1 使用@MongoId 而不是@Id @MongoId(targetType = FieldType.STRING) protected String id; 即使“形状”是 ObjectId,它也会存储字符串 回答2 好吧,恐怕你不能用 Spring 数据做到这一点。 Mongodb(以及 Spring 数据)需要一个字段来唯一标识每个document 。 如果您已经有一个id字段,并且它对于每个对象都是唯一的,那么可以,您可以使用@Id对其进行注释,而 mongo 将负责其余的工作。 如果没有,您将必须创建一个新字段并将其映射到_id 。

2022-05-02 20:38:22    分类:技术分享    java   spring   spring-boot   spring-data-mongodb

Specifying cursor options when returning a Stream in Spring Data MongoDB?

I'm using Spring Data MongoDB (spring-boot-starter-data-mongodb from Spring Boot 1.5.2.RELEASE) and MongoDB 3.4.9 and have defined a repository defined that looks like this: interface MyMongoDBRepository extends CrudRepository<MyDTO, String> { Stream<MyDTO> findAllByCategory(String category); } I then have a service, MyService that interacts with this repository: @Service class MyService { @Autowired MyMongoDBRepository repo; public void doStuff() { repo.findAllByCategory("category") .map(..) .filter(..) .forEach(..) } } There's quite a lot of data in the database and sometimes this error

2022-05-02 14:19:15    分类:问答    java   spring   mongodb   spring-boot   spring-data-mongodb