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

推荐订阅源

MongoDB | Blog
MongoDB | Blog
V
V2EX
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
有赞技术团队
有赞技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
月光博客
月光博客
爱范儿
爱范儿
D
Docker
U
Unit 42
P
Proofpoint News Feed
I
InfoQ
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
L
LangChain Blog
V
Visual Studio Blog
IT之家
IT之家
Vercel News
Vercel News
G
Google Developers Blog
M
MIT News - Artificial intelligence
美团技术团队
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
MyScale Blog
MyScale Blog

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 数组变成空数组