arrays - 使用 mongodb 的 java 驱动程序从集合中获取数组字段
问题描述
我在尝试将特定 MongoDB 字段提取为数组时遇到问题。所以我有一个名为“用户”的集合,并在一个名为“项目”的字段中的用户中嵌套数据,如下所示:
{ "_id" : "1", "username" : "apacheuser", "password" : "Summer95!", "firm" : "apache", "roles" : [ "client,admin" ], "items" : [ { "_id" : "12323", "item-id" : "12312", "item-name" : "İtemic", "price" : 123123, "quantity" : 1231231 }, { "_id" : "123123", "item-id" : "12313", "item-name" : "aftereror", "price" : 1232, "quantity" : 12313213 } ] }
{ "_id" : "2", "username" : "springuser", "password" : "Spring99!", "firm" : "SpringSource", "roles" : [ "client" ], "items" : [ { "_id" : "01231q", "item-id" : "1233", "item-name" : "Patates", "price" : 12321, "quantity" : 12 } ] }
{ "_id" : "3", "username" : "user3", "password" : "Autumn03!", "firm" : "RedHat", "roles" : [ "client" ] }
使用下面的查询,我可以获得我想要的字段,但是,对于 JSON 解析,我需要items
从查询结果中删除标签。
Bson bsonFilter = Filters.eq("username", "apacheuser");
List<Document> results =db.getCollection("users").find(bsonFilter).projection(fields(include("items"),excludeId()))
预期的结果是这样的:
[ { "_id" : "12323", "item-id" : "12312", "item-name" : "İtemic", "price" : 123123, "quantity" : 1231231 }, { "_id" : "123123", "item-id" : "12313", "item-name" : "aftereror", "price" : 1232, "quantity" : 12313213 } ] }
相反,我得到了这个:
"items" : [{ "_id" : "12323", "item-id" : "12312", "item-name" : "İtemic", "price" : 123123.0, "quantity" : 1231231 }, { "_id" : "123123", "item-id" : "12313", "item-name" : "aftereror", "price" : 1232.0, "quantity" : 12313213 }] }
所以很明显,我只需要删除'items'
标签即可正确解析。但我对如何做到这一点感到困惑。
解决方案
推荐阅读
- wordpress - 如何在我的网站上查看和下载私人视频(在私人 Pro Vimeo 个人资料上)?
- javascript - 如何从中获取特定的密钥?
- java - Mac JDK11:线程“主”java.lang.NoClassDefFoundError 中的异常:java/sql/SQLException
- python - 为什么我的 keras 模型根本不训练?
- r - 无法使用 plot_ly 函数绘制图形
- java - 在 Flux 平面图中处理 Mono
- c# - 执行程序时如何纠正错误“字符串未被识别为有效的日期时间”?
- ios - CAShapeLayer 未显示在屏幕上
- nlp - 不寻常的语言文本聚类/分类
- python - 这个 for 循环如何检查每个索引号,即使它说特别是索引 0?