mongodb中根据内嵌文档中的条件查询

在写报用户订单报表的时候遇到了一个mongodb的查询问题,上网上也找了下资料,在这里记录一下
根据订单文档中的内嵌文档里的数据进行查询数据库

{
"_id" : ObjectId("594ce45c5592f529700ec248"),
"holdInfo" : {
"presentIncomeRate" : null,
"availShare" : "10000.00",
"saleChnlId" : "BEST_WX",
"prodDueTime" : "30",
"userId" : "201706210001090382",
"prodIncomeRate" : "5.66",
"repayDate" : "20170730",
"YetPayIncome" : "0.00",
"createDate" : "2017-06-23 17:48:49",
"onTheWaySgAmt" : "0.00",
"calIncomeShare" : "0.00",
"prodCatId" : "02001",
"totalShare" : "10000.00",
"onTheWayShAmt" : "0.00",
"status" : "1",
"hStatus" : "00",
"vendorId" : null,
"noPayIncome" : "46.52",
"standBy4" : "0.00",
"totalIncome" : "0.00",
"standBy3" : null,
"standBy2" : null,
"standBy1" : "00",
"standBy5" : "0.00",
"fpHoldId" : "CC15cd45aa7561"
},
"prodCatId" : "02001",
"txnType" : "30",
"prodId" : "zdsjyz0622_03",
"orderTime" : "2017-06-23 17:50:20",
"normalIncome" : "46.52",
"orderStatus" : "00",
"isDelete" : "2",
"txnNum" : "10000",
"prodName" : "自动上架验证62203期",

查询方法db.user_prod_trade_records.find({"prodId":"zdsjyz0622_03","holdInfo.userId":"201706210001090382");
在根据文档中单个数据查询的时候,只要使用字段名.内嵌文档的字段名:查询条件即可

那么问题来了,如果我需要查询整个文档怎么办呢? 需要使用 $elemMatch

db.user_prod_trade_records.
find({"holdInfo":{"$elemMatch":{输入整个文档内容的}}});
即可查询

上面代码就可以解决内嵌文档全匹配的问题

Spring Boot 集成 MongoDB 时,可以通过 MongoDB查询功能来查询内嵌的 List。MongoDB 支持多种查询方式,其 MongoDB Java 驱动提供了丰富的操作类,比如 `Criteria`、`Query` 等,可以帮助我们构建复杂的查询条件。 对于内嵌 List 的查询MongoDB 提供了两种主要的查询方式:点表示法和数组操作符。 1. 点表示法:当你知道 List 具体的元素时,可以使用点表示法来精确匹配。例如,如果你有一个文档结构如下: ```json { "name": "张三", "hobbies": ["阅读", "旅游"] } ``` 如果你想查询 `hobbies` 包含 "阅读" 的文档,可以使用以下代码: ```java import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.MongoTemplate; // ... @Autowired private MongoTemplate mongoTemplate; public List<User> findUsersWithHobby(String hobby) { Query query = new Query(Criteria.where("hobbies").is(hobby)); return mongoTemplate.find(query, User.class); } ``` 2. 数组操作符:对于 List 的元素进行模糊查询或者特定条件查询,可以使用 `$all`、`$in` 等操作符。 - 使用 `$all` 查询 List 包含所有指定元素的文档: ```java Query query = new Query(Criteria.where("hobbies").all("阅读", "旅游")); ``` - 使用 `$in` 查询 List 包含任一指定元素的文档: ```java Query query = new Query(Criteria.where("hobbies").in("阅读", "写作")); ``` 结合 Spring Data MongoDB 的强大功能,你可以很容易地构建复杂的查询,并将它们应用到你的应用程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值