我正在使用reduce
从数组
创建字段
的联接字符串
。
例如,假设我有一个子文档
的数组
名为子文档
并且每个子文档
都有一个名称
字段
。
例如:
[
{name:"Zak"}, {name:"Bob"}, {name:"Sharon"}, {name:"Zak"}, {name:"Cindy"}, {name:"Bob"}, {name:"Peter"}
]
下面的表达式
会给我一个“Zak,Bob,Sharon,Zak,Cindy,Bob,Peter,”
的“CSV”;
(是的--我知道我可以使用$cond
来检测最后一次迭代并删除trail
ing“,”
。
uniqueCsv: {
$reduce: {
input: "$children",
initialValue: '',
in: {
$concat: ["$$this.name", ", ", "$$value"]
}
}
}
是否可以使用此reduce
来dedupe
和sort
以便我们可以
“Bob,Cindy,Peter,Sharon,Zak”
?
谢谢!
$setunion
从children.name
中获取唯一元素,这将按升序对字符串排序$concat
将第一个参数作为$$value
传递,如果value为空则将第二个参数作为条件传递,否则返回empty;第三个参数作为$$this
表示当前字符串db.collection.aggregate([
{
$project: {
uniqueCsv: {
$reduce: {
input: { $setUnion: "$children.name" },
initialValue: "",
in: {
$concat: [
"$$value",
{ $cond: [{ $eq: ["$$value", ""] }, "", ", "] },
"$$this"
]
}
}
}
}
}
])
游乐场
挑战任务 初始文件index-start.html中提供了一个包含多个列表项的无序列表元素,每一个列表项均添加了data-time属性,该属性用分和秒表示了时间。要求将所有的时间累加在一起,并用时:分:秒来表示计算的结果。 实现效果 基本思路 1.取得所有li中data-time属性的值,将时间换算为秒并累加求得总时间(单位:秒); 2.手动计算将总时间转化为新的格式“XX小时XX分XX秒”; 3
问题内容: 我被要求对数组进行排序和搜索。对数组进行排序很简单,我的代码也起作用了,但是每当我尝试调用二进制搜索方法时,它就可以对数组中的第一个元素起作用,但是结果是“ -1” 我的完整代码如下: 问题答案: 您搞砸了二进制搜索间隔
目标 我想问一下这个问题: null 我想解决方案可能非常简单,就像查询本身一样,但这些是我在这种基础上迈出的第一步。提前感谢你在这方面的任何帮助。
我正在努力得到正确的语法下面。我尝试过不同的工会,但都没有成功。 我需要将这三个总数相加为“totcount”。数据表非常大,希望找到一种比第4个子查询更好的方法来获取totcount。
The dedupe command isn’t necessary. yarn install will already dedupe.
我想按第三个和第一个元素对元组数组进行排序,因此我使用了以下代码: 我的问题是,在前面的例子中,我可以按第三个元素和第一个元素的升序排序,也可以按它们的降序排序(使用反向)。但是如何按第三个元素的升序和第一个元素的降序排序。 请在你的回答中考虑以下情况: 在这种情况下,我不知道内部数组的确切大小(取决于我读入该数组的文件模式),我想按侧中的所有项进行排序(一些升序和一些降序)。 编辑:看起来,我明