首页   注册   登录
 lqzhgood 最近的时间轴更新

lqzhgood

V2EX 第 82004 号会员,加入于 2014-11-17 11:10:55 +08:00
今日活跃度排名 3116
求个 前端 目录压缩一把梭的软件~
程序员  •  lqzhgood  •  117 天前  •  最后回复来自 lqzhgood
5
114 dns 不解析 .ooo 的域名吗?
DNS  •  lqzhgood  •  169 天前  •  最后回复来自 xuyi3966
12
老生常谈 IDEA 字体发虚 求解~
JetBrains  •  lqzhgood  •  182 天前  •  最后回复来自 doommm
12
Bulma CSS 框架 文档翻译。。。
分享创造  •  lqzhgood  •  357 天前  •  最后回复来自 jy00566722
18
求教一个 mongodb 表关联问题~
数据库  •  lqzhgood  •  2018-01-04 20:01:13 PM  •  最后回复来自 lzszone
7
求推荐个 内网 服务器监控 / 探针 的轮子~
服务器  •  lqzhgood  •  2017-09-22 18:37:06 PM  •  最后回复来自 buseni
8
lqzhgood 最近回复了
你自己搭个服务器不就行了~ 放公网内网看你咯
服务器正则匹配一下 url @lastest 重定向到最新版本~
5 天前
回复了 Hanggi 创建的主题 云计算 阿里云控制台为什么要用 React 重写?
诶~ V R 都写。 最近佛系回归写 V 了。。。R 真是折腾
贴一下最终代码留给后人~

let resp = await this.ctx.model.Monitor.Check
.aggregate()
.match(query)
.lookup({
from: 'Project',
localField: 'Project',
foreignField: '_id',
as: 'Project',
})
.addFields({ Project: { $arrayElemAt: ['$Project', 0] } })
.match(queryPopulate)
.facet({
list: [{ $sort: { "meta.createdAt": -1 } }, { $skip: (page - 1) * limit }, { $limit: limit }],
total: [{ $count: "total" }],
})
.addFields({ total: { $arrayElemAt: ['$total', 0] } })
.project({ list: 1, total: "$total.total" });

最后两行是重组 Object 结构的。
如果查询条件为空 total 会返回空数组,最终还要处理 query 到 空数组的 临界情况

resp = resp[0];
if (!resp.total) resp.total = 0;


整体下来感觉补丁打的挺多的 没有酣畅淋漓的感觉~ 如果有更好的写法 欢迎下面回帖补充
@menyakun 3Q~
aggregate 只能返回 Array 那就没办法了~ 不过我感觉从语义上来说 facet 以后应该要返回 Object 的。
因为 facet 以后只剩下一个 DIY 后重组的对象了,还不如直接返回这个 Object。

P.S
奇了怪了 我下午也是按 3L 这么写, $count 那里一直报错。 估计是哪里秀逗了~~
@menyakun 同一个 collection
例如有一组数据 [{a:1},{a:2},{a:3},{a:4},{a:5},{a:6},{a:7},{a:8},{a:9},{a:10}.........,{a:98},{a:99},{a:100}]

前端传过来一个查询条件 a>50 ,需要返回 分页为每页 5 个 第 2 页的数据, 也就是需要返回的数据为
const result = {
list: [{a:56},{a:57},{a:58},{a:59},{a:60}],
total: 50
}

我之前的做法是
const result = {
list: await Model.find( {a:{"$gt":50}} ).skip(1),limit(5),
total: await Model.find( {a:{"$gt":50}} ).count()
}
这里 find 了两次 query。实际上是查了 2 次数据库。


我想在 find 第一次的时候就计算出 total。然后再 skip limit 返回 list,然后这个很常见的需求, MongoDB 怎么做呢?


P.S
我查了 MongoDB 文档, aggregation 里面的 facet 应该是可以做这个需求的。但是我写了一下午也没搞出来。result 始终返回的是一个 Array 不是一个 Object。求教

#api
https://docs.mongodb.com/manual/reference/operator/aggregation/facet/
25 天前
回复了 leven87 创建的主题 MongoDB MongoDB 如何在对象中进行联合查询?
前几天刚碰到这个问题
mongoose 的虚拟属性支持这个



https://mongoosejs.com/docs/populate.html
# Populate Virtuals
27 天前
回复了 pricesong 创建的主题 GitHub GitHub 阿波罗 11 号代码仓库惨遭中文灌水
我比较想知道 这份代码会有怎样的 bug …
神游就是子公司性质 不是代理商
之前主要做本地化
但是国内投入好几次 一直赚不到钱 日方就放弃了
现在就是个空壳 与其重开 不如找个代练
好像是机核还是哪个播客听到的 找的前员工聊的
37 天前
回复了 lr3800 创建的主题 分享创造 分享垃圾分类 API
https://laji.lr3800.com/api.php?name=你我他

{"code":250,"msg":"未检索到相关信息"}
借楼问问
有 windows 的接收端么~
老电视非智能系统。 想 HDMI 接个 windows 变接收端, 接受投屏并显示。
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2084 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 23ms · UTC 07:26 · PVG 15:26 · LAX 00:26 · JFK 03:26
♥ Do have faith in what you're doing.