如何查询所有子文档

2024-02-29

我从 MongoDb 和 nodejs (使用 mongoose)开始。

我有一个收藏Stories, 每个都可以有一个或多个Tags,是这样的:

{
    title: "The red fox",
    content: "The red fox jumps away...",
    tags: [
        {
            tagname: "fairytale",
            user: "pippo"
        },
        {
            tagname: "funny",
            user: "pluto"
        },
        {
            tagname: "fox",
            user: "paperino"
        }
    ]
},

... other stories

现在我想做一个标签云.

这意味着查询所有标签的故事。

在关系世界(例如 MySQL)中,我会有一个 Stories 表、一个 Tags 表和一个 Stories_Tags 表(多对多)。然后我会查询标签表或类似的东西。

有办法这样做吗? (我确定是的)

如果是,这是一个好的做法吗?或者它打破了 nosql 范式?

您能为我的架构设计想象出更好的方法吗?


以下是使用聚合框架执行此操作的方法(您需要使用刚刚发布的 2.2)。

db.stories.aggregate(
[
    {
        "$unwind" : "$tags"
    },
    {
        "$group" : {
            "_id" : "$tags.tagname",
            "total" : {
                "$sum" : 1
            }
        }
    },
    {
        "$sort" : {
            "total" : -1
        }
    }
])

您的结果将如下所示:

{
    "result" : [
        {
            "_id" : "fairytale",
            "total" : 3
        },
        {
            "_id" : "funny",
            "total" : 2
        },
        {
            "_id" : "silly",
            "total" : 1
        },
        {
            "_id" : "fox",
            "total" : 1
        }
    ],
    "ok" : 1
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何查询所有子文档 的相关文章

  • 有一种方法可以在 MongoDB 中强制引用完整性 [重复]

    这个问题在这里已经有答案了 当您搜索与 Mongo DB 相关的引用完整性时 标准响应是 MongoDB 不支持此 标准解释是 MongoDB 支持 refs 和 populate 但是没有什么可以阻止您将 ref 更改为无效值 对于许多具
  • Spring Data - MongoDB 索引 DBRef

    我正在使用 spring data mongodb 1 2 0 RELEASE 我有两个类 A 和 B 其中 B 引用了 A 并且用 DBRef 进行了注释 Class A Document collection a public clas
  • 下一个和上一个文档

    我正在制作一个图片库 每个图像都有一个 id 当我查看图像时 我想要接下来的 3 个图像和之前的 3 个图像 我怎样才能在 mongodb 查询中得到这个 我认为我可以使用 sort by id 因为这是不可排序的 也许使用mapReduc
  • 从 mongo shell 查找 mongoDB 上 2 个文档之间的差异

    我正在使用 mongodb 2 4 4 我想比较 2 个文档 然后仅使用 mongo shell 打印它们的差异 有没有办法比较它们 就像是 db collection compare first doc objectID blablalb
  • Mongoose:转换为 ObjectId 失败

    我正在尝试在 MongoDB 中创建一个类别层次结构 以便通过 Mongoose 与 Node js 一起使用 我正在使用祖先数组方法 http docs mongodb org manual tutorial model tree str
  • 如何在 mongodb-native findAndModify 中使用变量作为字段名称?

    在使用 mongodb native 驱动程序的这段代码中 我想增加在单独变量中指定的字段的值 问题在于 在这种情况下 inc 子句中的字段名称将是 变量 而不是变量的内容 在查询部分中 所选变量按预期工作并找到正确的 ID var sel
  • mongo docker 镜像创建后未运行脚本

    我使用 docker compose 为前端 后端和 mongo 实例创建 3 个不同的容器 其中三个正在运行并在它们之间连接 但我需要在 mongo 实例运行后立即在数据库上创建一个管理员用户 根据 mongo 图像文档 每个脚本位于do
  • mongoid 中的嵌入文档与哈希数据类型

    我找不到任何讨论此问题的博客文章或文档 它们 嵌入式文档和哈希数据类型 非常相似 彼此相比有何好处或限制 考虑我的架构设计 class HistoryTracker include Mongoid Document include Mong
  • 创建永远不匹配的 mongo 表达式的最佳方法

    我正在寻找的内容在某种程度上相当于在 SQL 中执行的操作 WHERE 1 0 我正在寻找这样的东西 因为我正在构建一个类型安全的 DSL 来在我的域上执行查询 支持连接和析取 有时 添加一个从不匹配任何内容的查询可能比在代码中处理它更容易
  • JPA ManyToMany 产生的空联接表

    我有一个应用程序 其中我尝试使用 Hibernate 作为 JPA 提供程序来实现两个实体之间的多对多关系 我正在尝试的例子是一个单向的 其中一个相机可以有多个镜头 而镜头可以安装到多个相机中 以下是我的实体类 只需粘贴其中的相关部分 Ca
  • 服务器发现和监控引擎已弃用

    我在 Node js 应用程序中使用 Mongoose 这是我的配置 mongoose connect process env MONGO URI useNewUrlParser true useUnifiedTopology true u
  • 将 mongo 数组转换为具有键值对的对象

    我有一个包含字符串数组的 mongo 文档 我需要将这个特定的字符串数组转换为包含键值对的对象数组 以下是我目前的做法 id ObjectId 57e3720836e36f63695a2ef2 platform A1 available C
  • MongoDB 将数字转换为科学计数法的字符串

    我想获得完整的号码String 但反而 1490650000000 它返回科学计数法 1 49065e 12 这是我尝试转换它的方法 substr myNumber 0 1 有什么想法如何预防吗 Note 我使用的是v3 6 无法升级使用
  • 关于 Cassandra 与 MySQL 的一些建议

    几天前我在这里问了一个问题 得到了一些非常好的答案 我正在考虑做一个带有个人资料 个人简介等的facebook风格的网站 并询问我是否应该使用mysql 答案是使用Cassandra 因为好多了 我只是问这是每个人都会建议的 只是我对mys
  • Hector 和 Cassandra 问题 NoSuchFieldError:DEFAULT_MEMTABLE_THROUGHPUT_IN_MB

    我正在通过 Hector 测试与 Cassandra 数据库的连接 但是当我运行 Junit 测试时 我不断收到以下消息 java lang NoSuchFieldError DEFAULT MEMTABLE THROUGHPUT IN M
  • 如何修复 MongoClient is not a constructor 错误

    我刚刚学习 JavaScript 和 Nodejs 根据我在网上找到的一些代码 我编写了以下应用程序 当我尝试运行它时 我在第 9 行收到错误 其中显示 new MongoClient 错误提示 MongoClient 不是构造函数 您能解
  • 为什么 Firefox 关闭空 html 标签?

    我注意到在 Firefox 中 当我查看源代码时 它会向空标签项添加结束标签 例如 hr and img src image jpg 在 Firefox 中查看源代码我明白了 hr and img src image jpg 该文档是 HT
  • mongoengine 操作的原子性如何

    我正在尝试在对象的状态之间转换 如下所示 User objects id user id state STATE WAITING update one set state STATE FINISHED The question是 是否存在这
  • MongoDB 嵌套数组查询

    我问这个作为评论another https stackoverflow com questions 5250652 query a nested array in mongodb问题 还发了一个question https groups g
  • 为什么 Mongohint 可以使查询运行速度提高 10 倍?

    如果我使用explain 从shell运行mongo查询 获取所使用的索引的名称 然后再次运行相同的查询 但使用hint 指定要使用的相同索引 解释计划中的 millis 字段是显着下降 例如 没有提供任何提示 gt gt db event

随机推荐