spring-boot - 我想将本机 mongo 查询转换为 spring boot mongo 存储库查询
问题描述
Asset {
ObjectState objectState = ObjectState.CURRENT
String description
@NotEmpty(message = "*Please provide a asset name")
@Length(min = 2, max = 50, message = "*Asset name must have characters between 2 and 50")
String assetName
@DBRef
Company company
}
这是我的资产类,其中公司是用户现在我想按资产名称或描述执行搜索,然后我在 AssetRepository 中写一个查询,如下所示
Page<Asset> findAllByAssetNameIgnoreCaseContainingOrDescriptionIgnoreCaseContainingAndObjectState(searchQuerty,searchQuery,pageable,objectState)
它将在所有资产中搜索现在我想为特定用户(公司)编写查询我在下面写了一个这样的查询,但它使用 searchQuery“test”返回所有资产(其他用户也)
Page<Asset> fetchAssetBySearchStringAndCompanyAndObjectState(Company company, Pageable pageable, String searchQuery) {
ObjectState objectState = ObjectState.CURRENT
if (!pageable) {
pageable = PageRequest.of(0, 10, Sort.Direction.DESC, "lastUpdated")
}
if (searchQuery) {
return assetRepository.findAllByCompanyInAndAssetNameIgnoreCaseContainingOrDescriptionIgnoreCaseContainingAndObjectState(company, searchQuery, searchQuery, pageable, objectState)
} else {
return assetRepository.findAllByCompanyAndObjectState(company, objectState, pageable)
}
}
我写了一个这样的mongo本机查询
db.assets.find({
"company" : {
"$ref" : "users",
"$id" : ObjectId("60709ab978f45041425be752")
},
"objectState":"CURRENT",
$or : [
{"assetName": { $regex:"test girl", $options:'i' }},
{"description": { $regex:"test girl", $options:'i' }}
],
})
解决方案
推荐阅读
- spring-security - 登录重定向转到 STOMP 端点
- amazon-web-services - AWS Application Load Balancer 将所有 www 和非 http 重定向到 https://
- c++ - MFC:如何设置 CEdit 框的焦点?
- sql - Oracle:加载日期时间
- html - 如何去除 Django 生成的 html 周围的引号?
- .net - 在运行 cake 脚本时配置环境变量以解决版本不匹配问题
- java - lambda 中使用的变量应该是最终的或有效的最终用于字符串附加
- syntax - JQ 从查询中获取编译错误响应
- java - 替换默认 Android Studio 导航抽屉中的片段
- javascript - 如何使用 d3.js 从第二个对象级别“映射”JSON 值