我需要返回带有mongoDB聚合的字符串数组。我做了以下操作:
db.users.aggregate([{$group: {_id:"$emails.address"}}])
它返回:
{ "_id" : [ "a@a.com" ] }
{ "_id" : [ "b@a.com" ] }
{ "_id" : [ "c@a.com" ] }
有没有一种方法可以返回像这样的字符串数组:
["a@a.com","b@a.com","c@a.com"]
非常感谢任何花时间帮助我的人。。
编辑
添加数据:
{
"_id" : "ukn9MLo3hRYEpCCty",
"createdAt" : ISODate("2015-10-24T03:52:11.960Z"),
"emails" : [
{
"address" : "a@a.com",
"verified" : false
}
]
}
{
"_id" : "5SXRXraariyhRQACe",
"createdAt" : ISODate("2015-10-24T03:52:12.093Z"),
"emails" : [
{
"address" : "b@a.com",
"verified" : false
}
]
}
{
"_id" : "WMHWxeymY4ATWLXjz",
"createdAt" : ISODate("2015-10-24T03:52:12.237Z"),
"emails" : [
{
"address" : "c@a.com",
"verified" : false
}
]
}
布莱克七的回答是对的。
这个aggregate()方法始终返回对象,无论您做什么,这些对象都无法更改。
但是,这并不意味着不能将它们放入数组中,然后将数组返回到对象中。
我相信在数据库本身的数组中映射会更好,因为您的节点服务器仍然可以用于其他请求。
db.users.aggregate([
{ "$unwind": "$emails" },
{ "$group": { "_id": null, emails:{$push:"$emails.address"} } },
{ "$project":{emails:true,_id:false}}
])
这将返回:
{ "emails" : [ "a@a.com", "b@a.com", "c@a.com" ] }
<代码>。aggregate()方法始终返回对象,无论您执行什么操作,并且这些操作无法更改。
出于您的目的,您最好使用。相反,它只返回一个不同值的数组:
db.users.distinct("emails.address");
这正是您想要的输出:
["a@a.com","b@a.com","c@a.com"]
如果您真的想使用
.聚合()
,那么对值的转换需要在后处理中发生在表达式的“外部”。在处理这样的数组时,您还应该使用$unWind
。
您可以使用JavaScript实现这一点。map()
例如:
db.users.aggregate([
{ "$unwind": "$emails" },
{ "$group": { "_id": "$emails.address" } }
]).map(function(el) { return el._id })
它给出了相同的输出,但是。map()
在客户端而不是服务器上进行转换。
本文向大家介绍如何获取 MongoDB 聚合中的子字符串,包括了如何获取 MongoDB 聚合中的子字符串的使用技巧和注意事项,需要的朋友参考一下 要获取子字符串,请在MongoDB中使用$substr。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是在MongoDB聚合中获取子字符串的查询- 这将产生以下输出-
我有一个函数,当某些条件不满足时,它应该不返回任何内容(void)或字符串。 我也试过这句话。左(无效)
我想执行一个进行基本分页的聚合查询: 查找属于某个 以下是查询的详细信息: 这将查找所有匹配的文档: 这对文档进行了排序: 这会对文档进行计数,并传递未修改的文档,但我肯定这样做是错误的,因为事情从这里开始变得很奇怪: 这似乎跳过了一些文档: 这本应限制文件,但却没有: 这会返回计数,但不会返回数组中的文档,而是返回每个字段的数组: 结果是: 我哪里弄错了?
问题内容: 我正在从Java程序的Delphi编译的* .so文件中调用函数。经过研究后,JNA似乎是他的路要走。在深入研究一些复杂的Delphi代码之前,我尝试使用一些“ Hello World”代码,但是在获取由Delphi函数返回的字符串时遇到了麻烦。 Delphi代码(helloworld.pp): 我从命令行使用“ fpc -Mdelphi helloworld.pp ” 编译它,生成
我在mongodb 4.0中使用Spring(boot)数据2.2.7。我已经设置了3个集合,试图通过聚合查找操作加入这些集合。 目录 股票 操作 目录 映射由 股票 映射由 productId字段引用目录集合中的_id字段 操作 映射由 组件ID字段指的是库存集合中的_id 我想查询操作或库存收集,以检索相应的节点或组件对象列表,该列表由Product.model字段(在目录集合中)排序。) 虽
问题内容: 好的,这就是我的for子手游戏代码,我唯一要做的就是让我的程序将其中一个单词随机化,这应该在方法中成功完成。但是我唯一的问题是让String变量 “ word” 返回到主类(在主类中的所有 “ word” 变量下面都有错误)。 如果我可以通过这种方法获得另一种帮助,或者从列表中产生随机单词的另一种方法,那将是惊人的。 问题答案: 在Java中,参数是通过值而不是引用传递的。因此,您不能