问一下,mongodb 支持只返回 value,而不是返回 key:value 这样子格式的吗?
比如下面的表
> db.user.find() { "_id" : ObjectId("6077fac5fe214ec7b60ea68e"), "name" : "chenyurong", "age" : 25, "addr" : "ShenZhen" } { "_id" : ObjectId("60780dbdfe214ec7b60ea68f"), "name" : "chenyurong", "age" : 26, "addr" : "ShenZhen" } { "_id" : ObjectId("60780dc0fe214ec7b60ea690"), "name" : "chenyurong", "age" : 27, "addr" : "ShenZhen" } { "_id" : ObjectId("60780dc3fe214ec7b60ea691"), "name" : "chenyurong", "age" : 28, "addr" : "ShenZhen" } { "_id" : ObjectId("60780e39fe214ec7b60ea692"), "name" : "test", "age" : 20, "addr" : "ShenZhen" }
> db.user.find({"name":"test"},{"age":1}) { "_id" : ObjectId("60780e39fe214ec7b60ea692"), "age" : 20 }
但我希望返回的直接是20
,这个 mongodb 支持的嘛?
目前我查阅的资料都是不支持的,有没有人有其他的操作
> db.user.find({},{"age":1}) { "_id" : ObjectId("6077fac5fe214ec7b60ea68e"), "age" : 25 } { "_id" : ObjectId("60780dbdfe214ec7b60ea68f"), "age" : 26 } { "_id" : ObjectId("60780dc0fe214ec7b60ea690"), "age" : 27 } { "_id" : ObjectId("60780dc3fe214ec7b60ea691"), "age" : 28 } { "_id" : ObjectId("60780e39fe214ec7b60ea692"), "age" : 20 }
我希望可以返回的是关于 age 的列表,比如{ age:[25,26,...] } 或者直接是[25,26,...]
这个可以实现嘛?还是只能从上面的结果进行处理生成数组
目前我使用 spring-boot-starter-data-mongodb 操作 mongodb 的,主要使用 MongoTemplate
我想了解下 MongoTemplate 有没有对其封装有实现上面两个需求的,目前我看文档也是没有找到
没有的话是不是只能查询出 List<User>,再编历读取构建 age 的数组了
有相关使用或者资料的小伙伴麻烦提供下你的建议!!谢谢!
![]() | 1 xkeyideal 2021-04-15 18:22:02 +08:00 学艺不精,mongodb 取哪个字段是{"age":1},那么有没有反问过,不取哪个字段应该怎么写呢? 答案:db.user.find({"name":"test"},{"age":1,"_id":0}) |
![]() | 2 est 2021-04-15 18:25:26 +08:00 估计是不行的。还是得在代码里自己拼接。 你实在要 mongo 自己吐格式,可以用 aggregate |
5 anthoy OP @xkeyideal > db.user.find({"name":"test"},{"age":1,"_id":0}) { "age" : 20 } 但我想的是只返回 20,而不是{ "age" : 20 } 感觉我们之间有点不在同一条频道上呀,或者你想说的是别的? |
![]() | 6 DGideas 2021-04-15 21:55:05 +08:00 https://stackoverflow.com/questions/35434911/pymongo-find-only-return-answer 最方便的方法好像就是在 List Comprehension 里用 ["key"] 来取 value 了 |
![]() | 7 DGideas 2021-04-15 21:56:23 +08:00 不过话说回来啊,这种数据库查询一般都会返回一个结果集,都得需要自己从中取数据的啊,一个结果集就是一条(包含一个或多个字段的)字典数据结构嘛 |
![]() | 8 zengming00 2021-04-15 22:21:38 +08:00 db.user.find({"name":"test"},{"age":1,"_id":0}).age |
![]() | 9 maocat 2021-04-15 23:56:07 +08:00 db.user.distinct("age", {"name":"test"}) |
![]() | 10 maocat 2021-04-16 00:16:18 +08:00 ![]() db.user.find({"name":"test"}).map( function (item){ return item.age} ) |
11 listenerri 2021-04-16 08:53:17 +08:00 @zengming00 #8 @maocat 请问像这种链调的风格,不怕 `find` 找不到结果返回空值吗? |