惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
Recent Announcements
Recent Announcements
B
Blog
D
Docker
V
V2EX
GbyAI
GbyAI
L
LangChain Blog
博客园 - Franky
U
Unit 42
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
博客园_首页
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
量子位
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客

MongoDB

求助,谁会用那个 mongoDB 的云数据库啊,帮看看咋链接报错呢 mongodb 自托管到底支持 vector 搜索吗 大佬们,急需请教,遇到大困难 有啥好用的 mongodb GUI 工具 大佬们,大问题请教,内存占满 mongodump 出来的文件为什么比数据库本身大了一倍多?数据库大小只有 100GB, dump 出来的 bson 有 242GB,硬盘放不下了,怎么不占用硬盘空间备份数据到其它机器? 想请教一下, mongoDB 是否适合海量数据存储 MongoDB 如何优化到跟 MySQL 资源占用一样低? 新人小白求教 mongodb 新手虚心请教大佬们 请教大家一个 mongodb 大数据量下, count 优化的问题 MongoDB 的 findOneAndUpdate 并发问题 求助大佬们: Mongo DB Compass 加 socks5 代理连不上 MongoDB Atlas 上的库 关于远程 mongodb 数据同步到本地 Elasticsearch 问题 mongodb 日志文件巨大,怎么读取,以及怎么限制其大小? 江湖救急,冷备数据恢复 感觉 Mongodb 的权限管理有点复杂 MongoDB 有什么比较新的入门教程吗? 有没有觉得用 typescript 写 mongoose 好蛋疼 mongodb 生产环境创建索引 刚用 mongodb,请教下类似 MySQL 的「select ... for update」大伙都是如何替代? 求一个好用的 MongoDB 管理工具~ mongodb 只剩硬盘上的数据库文件要怎么恢复 各位 javaer MongoDB 用的什么 orm mongodb lookup 使用请教 monodb 内存占满,进程退出 12 月 14 日上海新天地朗廷酒店,我司赞助的 MongoDB Day 上海站,欢迎大家联系我注册报名。 mongoose 外键查询问题 MongDB upsert 时新增的字段不能更新值 大佬们,请问如何通过 go.mongodb.org 的驱动允许集合分片啊,他的驱动不支持运行脚本吗?
用不存在的字段的子字段 lookup 时,分组后该字段值会变成空...
imldy · 2023-02-17 · via MongoDB

场景是为评论寻找子评论 评论文档

{
  "_id": {
    "$oid": "63ed9bd52b031a24fdbe1e1e"
  }
  "creatorId": {
    "$oid": "63e51a155ca7f018d6038967"
  },
  "text": "评论内容 0216"
}

子评论文档:

{
  "_id": {
    "$oid": "63ee03eb98b24f5603c044da"
  },
  "linkCommentId": {
    "$oid": "63ed9bd52b031a24fdbe1e1e"
  },
  "replyToUserId": {
    "$oid": "63e51a155ca7f018d6038967"
  },
  "creatorId": {
    "$oid": "63e51a155ca7f018d6038967"
  },
  "text": "测试子评论 0216-2"
}

代码

[
  {
    $match:
      {
        _id: ObjectId("63ed9bd52b031a24fdbe1e1e"),
      },
  },
  { // 从子评论集合中找到评论的子评论(假设该评论不存在子评论,replies 为空数组)
    $lookup:
      {
        from: "dynamicChildComment",
        localField: "_id",
        foreignField: "linkCommentId",
        as: "replies",
      },
  },
  { // 展开子评论(得到一条没有 replies 的文档)
    $unwind:
      {
        path: "$replies",
        preserveNullAndEmptyArrays: true,
      },
  },
  { // 1 、给子评论寻找发布者,执行后:replies 对象只存在一个属性 creator ,值为空数组
    $lookup:
      {
        from: "users",
        localField: "replies.creatorId",
        foreignField: "_id",
        as: "replies.creator",
      },
  },
  { // 2 、执行后:replies 对象没有属性
    $unwind:
      {
        path: "$replies.creator",
        preserveNullAndEmptyArrays: true,
      },
  },
  { // 3 、执行后:replies 对象只存在一个属性 replyToUser ,值为空数组
    $lookup:
      {
        from: "users",
        localField: "replies.replyToUserId",
        foreignField: "_id",
        as: "replies.replyToUser",
      },
  },
  { // 4 、执行后:replies 对象没有属性
    $unwind:
      {
        path: "$replies.replyToUser",
        preserveNullAndEmptyArrays: true,
      },
  },
  {
    $group:
      {
        _id: "_id",
        replies: {
          $push: "$replies", // 到这里,就出现了一个 replies 数组,有一个空对象作为第 0 个元素
        },
      },
  },
]

我该如何将 replies 数组变成空数组