我是 Spring Data MongoDB 的新手,我正在尝试使用 Spring Data MongoDB 在 Java 中实现聚合查询。我尝试从这个问题中进行搜索并使用 来解决它MongoTemplate,但仍然没有结果。
我的数据格式:
[{
"_id" : ObjectId("5e1aea6c275360baf96bac29"),
"title" : "postim",
"upvotesBy" : [
"5e18b4c12753608718dfa007",
"5e19ac0f5161a4994ded1f35"
],
"file" : "test",
"description" : "description",
"postedBy" : "5e18b4c12753608718dfa007",
"createdAt" : ISODate("2020-01-12T09:44:12.119+0000"),
"_class" : "com.socialnetwork.post.Post"
},
{
"_id" : ObjectId("5e1aeaf8275360bb4bb47325"),
"title" : "postim2",
"upvotesBy" : [
"5e18b4c12753608718dfa007",
"5e19ac0f5161a4994ded1f35"
],
"file" : "test2",
"description" : "description2",
"postedBy" : "5e18b4c12753608718dfa007",
"createdAt" : ISODate("2020-01-12T09:46:32.909+0000"),
"_class" : "com.socialnetwork.post.Post"
}]
Run Code Online (Sandbox Code Playgroud)
我的查询:
db.post.aggregate([
{
$match: {}
},
{ …Run Code Online (Sandbox Code Playgroud) 我有一个使用 MongoDB 作为数据库的 Spring Boot 2 项目。
当我通过调用 LocalDateTime.now() 将包含日期的对象实例化为 LocalDateTime 时;我收到一个包含纳秒且超过 4 位数字的日期时间。
当我使用 mongotemplate.save 将这些数据保存在 mongoDB 中时,保存的值仅包含纳秒的 3 个位置(其余部分用零填充)。那么,如何在存储到数据库时达到相同的精度呢?或者另一种选择:在java中创建LocalDateTime实例时如何限制精度?
@Document("Entity")
public class Entity implements Serializable {
@Id
private String id;
@Indexed(name = "created")
private LocalDateTime created;
public HistoryEntity(){
// This gives me 2020-01-30T13:25:09.817182
this.created = LocalDateTime.now();
}
}
Run Code Online (Sandbox Code Playgroud)
@Repository
public class DAO {
@Autowired
private MongoTemplate mongoTemplate;
public void save(Entity e) {
// When value is persisted, I get 2020-01-30T13:25:09.817 if I look into mongoDB instance or if …Run Code Online (Sandbox Code Playgroud) 我正在尝试从之前放置的数据库中删除索引。
@Indexed(unique = true)
private String name;
Run Code Online (Sandbox Code Playgroud)
删除 后@Indexed(unique = true),我也需要将其从 中删除MongoDB。我需要在春季内完成。@PostConstruct我可以用什么东西来做吗?
我正在尝试根据 Asya Kamsky 的帖子使用 MongoDB 和 Spring Data 实现自定义排序:
List<AggregationOperation> operations = new ArrayList<>();
operations.add(Aggregation.addFields().addField("scorrrz")
.withValueOfExpression("{ \"$indexOfArray\" : [ [\"John\", \"Bill\"], \"$name\" ] }").build());
Run Code Online (Sandbox Code Playgroud)
当我尝试执行此操作时,我得到:
ERROR a.insurance.misc.ErrorAttributes - /api/v1/insurance/opportunity/all
org.springframework.expression.spel.SpelParseException: Expression [{ "$indexOfArray" : [ ["John", "Bill"], "$name" ] }] @29: EL1043E: Unexpected token. Expected 'rsquare(])' but was 'comma(,)'
Run Code Online (Sandbox Code Playgroud)
这不是正确的语法吗?如何使用 Spring Data 来完成此操作?
mongodb spring-data aggregation-framework spring-data-mongodb
我对 MongoDB 很陌生。尝试了解在 MongoDB 中执行批量写入的最佳选项。我想定期刷新我的应用程序集合。文档的键是 AppID、AppName 和 AppStatus。以下是我想在每次运行中执行的操作 -
Run Code Online (Sandbox Code Playgroud)List<Application> applist = getAppList(); // List contains All the Application private final MongoClient mongoClient; private final MongoTemplate mongoTemplate; MongoCollection<Document> collection = mongoTemplate.getDb().getCollection("Application"); collection.bulkWrite (????);
如何循环 appList 并执行批量插入/更新?
我想使用 Spring Data MongoDB 查询 mongo 集合中的子列表。我的代码就像
public interface SomeRepo extends MongoRepository<SomeDoc, String> {
@Query("{'field0': ?0, 'field1': ?1}, {'limit':?2, 'skip':?3}")
List<SomeDoc> findAllByField0AndFiled1(
Long field0,
Long field1,
Long limit,
Long skip
);
}
Run Code Online (Sandbox Code Playgroud)
但limit&skip不在查询对象中
日志是
Created query Document{{field0=123, field1=456}} for Document{{}} fields.
如何将它们传递到查询对象中?
我相信这个问题已在这里问了一段时间,但没有任何公认的答复.我实际上尝试了各种教程,但没有得到它们.我有一个multi modules maven项目.我有dependency-management和plugin-management在父项目中.poms如下所示:
<!--parent ${querydsl.version} = 2.3.2-->
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>${project.build.sourceEncoding}</encoding>
<!-- <fork>true</fork>
-->
<meminitial>128m</meminitial>
<maxmem>512m</maxmem>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>maven-apt-plugin</artifactId>
<version>1.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencyManagment>
<dependencies>
<!-- Querydsl -->
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-core</artifactId>
<version>${querydsl.version}</version>
</dependency>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
</dependency>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>${querydsl.version}</version>
</dependency>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-mongodb</artifactId>
<version>${querydsl.version}</version>
</dependency>
<!-- End Querydsl -->
</dependencies>
</dependencyManagment>
Run Code Online (Sandbox Code Playgroud)
我在db mobule中都有jpa和mongo,两者都在不同的包中.但我只想 …
mongodb maven-plugin querydsl spring-data spring-data-mongodb
Spring MongoDb仍然坚持使用mongo客户端的2.10版本.
是否可以使用更新版本的mongo驱动程序与spring mongodb或会破坏什么?
我有一个带有数组字段的文档
"chapters": [
{ "id" : "14031871223912313", ...}
...
]
Run Code Online (Sandbox Code Playgroud)
我想使用以下命令查询使用Spring Data的MongoTemplate返回id:
class Chapter {
private String id;
public String getId() {
return id;
}
}
Run Code Online (Sandbox Code Playgroud)
这样就不会填充id.我尝试使用@Field中描述的不同映射选项http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mapping.conventions.id-field
我究竟做错了什么?我知道我总是可以回到mongo java驱动程序,但我认为这应该工作.
在此先感谢您的帮助.
我有一个简单的问题:
我如何表达这个查询
db.inventory.find( { "instock": { warehouse: "A", qty: 5 } } )
Run Code Online (Sandbox Code Playgroud)
在春季数据mongoDB中,最好使用QueryDSL,但也欢迎其他方式。
到目前为止,我所有的查询都匹配数组中任何嵌入式文档上的字段,但是我需要在同一字段上将两者都匹配。
mongodb ×8
spring ×3
spring-data ×3
java ×2
mongodb-java ×2
spring-boot ×2
maven-plugin ×1
mongo-java ×1
querydsl ×1
rest ×1