Mongoose:保存为子文档关联数组与子文档数组

2024-04-16

我有一组需要保持持久性的文档。由于MongoDB处理多文档操作的方式,我需要将这组文档嵌入到容器文档中,以确保操作的原子性。

这些数据非常适合键值配对。有什么办法可以代替这样做:

var container = new mongoose.Schema({
   // meta information here
   subdocs: [{key: String, value: String}]
})

我可以改为subdocs是应用子文档验证的关联数组(即对象)?所以容器实例看起来像这样:

{
   // meta information
   subdocs: {
       <key1>: <value1>,
       <key2>: <value2>,
       ...
       <keyN>: <valueN>,
   }
}

Thanks


使用猫鼬,我不相信有办法做到你所描述的。为了解释一下,我们举一个例子,其中键是日期,值是高温,形成像 { "2012-05-31" : 88 } 这样的对。

让我们看看您提议的结构:

{
   // meta information
   subdocs: {
       "2012-05-30" : 80,
       "2012-05-31" : 88,
       ...
       "2012-06-15": 94,
   }
}

因为您必须在 Mongoose 中预先定义架构,所以您必须提前知道您的键名称。在这个用例中,我们可能不会提前知道我们将收集哪些日期的数据,因此这不是一个好的选择。

如果你不使用 Mongoose,你可以毫无问题地做到这一点。 MongoDB 本身擅长将具有新键名称的值插入到现有文档中:

> db.coll.insert({ type : "temperatures", subdocuments : {} })
> db.coll.update( { type : "temperatures" }, { $set : { 'subdocuments.2012-05-30' : 80 } } )
> db.coll.update( { type : "temperatures" }, { $set : { 'subdocuments.2012-05-31' : 88 } } )
{
    "_id" : ObjectId("5238c3ca8686cd9f0acda0cd"),
    "subdocuments" : {
        "2012-05-30" : 80,
        "2012-05-31" : 88
    },
    "type" : "temperatures"
}

在这种情况下,在 MongoDB 之上添加 Mongoose 会剥夺 MongoDB 的一些原生灵活性。如果您的用例非常适合 MongoDB 的此功能,那么使用 Mongoose 可能不是最佳选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongoose:保存为子文档关联数组与子文档数组 的相关文章

  • Inno Setup安装先决条件[重复]

    这个问题在这里已经有答案了 我正在通过 Inno Setup 创建一个安装程序 我看到很多关于如何检测先决条件是否存在的代码示例 但没有任何关于当我找不到先决条件时如何实际安装先决条件的代码示例 我确信它非常简单 但是我该如何安装先决条件呢
  • 使用mongoid动态创建索引

    我有一项为我的文档创建新字段的工作 我想在这项工作结束时创建该字段的索引 我试过 Model index field gt 1 and also Mongoid Sessions default rating prediction ensu
  • 如何在 Mongoose 中执行查找查询?

    我在 mongodb 中有一组电子书数据 例如 id ObjectId 58b56fe19585b10cd42981d8 cover path D Ebooks uploads ebooks cover 1488285665748 img1
  • MongoDB 在仅返回 _id 时使用 COLLSCAN

    我想返回 MongoDB 集合中的所有 ID 我使用了以下代码 db coll find id 1 但MongoDB扫描整个集合而不是从默认读取信息index id 1 从日志中 find collection filter project
  • 加密 mongodb 中的密码字段

    我有以下代码 它插入userName and password进入数据库 但密码以纯文本格式存储 我的意思是 当我查看数据库时 我可以看到插入的密码 我想存储password in encrypted format MongoClient
  • 当字段不为空时创建部分索引

    我正在尝试在字段上创建部分索引 但仅当该字段不为空时 换句话说 我希望能够让许多文档能够存储 null 但对于在字段中实际具有值的文档 我希望该值是唯一的 这是我尝试使用的代码 db account createIndex email 1
  • Mongoid 命名范围比较同一文档中的两个时间字段

    我需要在 Mongoid 中创建一个命名范围来比较同一文档中的两个时间字段 例如 scope foo where gt updated at gt gt checked at 这显然不会像它对待的那样起作用 checked at作为一个符号
  • 在 MongoDb 上序列化仅获取属性

    使用 C 6 我可以写 public class Person public Guid Id get public string Name get public Person Guid id string name Id id Name n
  • Spring Data MongoDB 和批量更新

    我正在使用 Spring Data MongoDB 并且想要执行批量更新 就像此处描述的那样 http docs mongodb org manual reference method Bulk find update Bulk find
  • 使用 AWS MSK 连接器连接到 AWS VPC 内的 MongoDB atlas

    我正在尝试使用MongoDB使用更改流Kafka 我选择 AWS MSK 是因为我的整个基础设施都位于 AWS 内 并且可以轻松与其他 AWS 服务集成 I created an AWS MSK cluster within the VPC
  • mongorestore 从独立到复制集

    我已转储在默认端口上运行的独立 mongo 数据库 14Gb 大 如下所示 mongodump username
  • 元素数组中数组的 MongoDB 全文

    当元素数组中的数组包含应与我的搜索匹配的文本时 我无法检索文档 以下是两个示例文档 id foo name Thing1 data text X X name Thing2 data text X Y id foo
  • Mongo按动态字段排序

    所以我传入了一个动态变量 它是我想要排序的字段的名称 假设下面的 sortVariable 可能等于 price createdAt name 等 这不起作用 我该怎么做 function findStuff sortVariable va
  • node-mongodb-native的插入性能

    我正在使用 MongoDB 测试 Node js 的性能 我知道其中每一个都很好 彼此独立 但我正在尝试一些测试来感受它们 我遇到了这个问题 但无法确定来源 问题 我正在尝试在单个 Node js 程序中插入 1 000 000 条记录 它
  • 让 MongoDB 在 Linux 上监听远程连接

    我已在 Windows 本地计算机上 上成功安装 MongoDB 作为服务 但现在我想将 MongoDb 移动到单独的服务器 所以我将 tarball 解压到网络上的虚拟服务器 运行 Linux 当我从本地计算机使用 PuTTY 连接到服务
  • (节点:20732)[DEP0018] DeprecationWarning:未处理的承诺拒绝已被弃用。未来在nodejs中

    我正在尝试在我的应用程序中生成确认链接 虽然它工作正常并且也生成链接 但是当我访问该链接时 它在 Chrome 控制台中显示 POST http localhost 3000 api auth confirmation 400 Bad Re
  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • 如何解决:“MongoError:此图集层不允许使用 $where”?

    使用 MongoDB Atlas 时如何解决 MongoError where is not allowed in this atlas tier 这是我的代码 async function getEventsTakingPlace con
  • 为什么我的 Mongoose 3.8.7 架构 getter 和 setter 被忽略?

    在使用 Node js Mongoose 和 MongoDB 时 我发现当我执行 findOne 查询时 我的 Mongoose 模式 getter 和 setter 不会触发 我发现一个旧线程表明 2 x 版本中的 getter 和 se
  • MongoDB 3.0 Windows 服务启动:发生系统错误 2

    我已经下载了 MongoDB Windows msi 安装并成功运行 mongod exe 和 mongo exe 命令文件执行工作正常 安装手册展示了如何创建配置文件 然后使用命令创建Windows Server sc exe creat

随机推荐

  • Angular - Google 未定义?

    你好 我正在尝试实施google maps api in angular 这很简单angularjs但我不知道什么不起作用 我有一个简单的应用程序 它显示产品及其位置 单击位置后 该位置会显示在地图上 但我正在使用的购物地图google m
  • R 中曲线下增量面积 (iAUC)

    曲线下面积可以使用以下公式计算trapz的功能pracmaR iAUC 中的包在许多情况下更加准确 特别是在生物学中 然而据我所知 没有 R 函数可以计算这个 陷阱函数如下 Example a lt c 1 4 5 6 b lt c 2 4
  • 如何使用 apache 设置 mpeg dash 服务器?

    我想在 ubuntu 10 04 上设置本地 mpeg dash 服务器 那么分别安装apache和mpeg dash编码器后该怎么办呢 thanks 只需将 MPD 和破折号段放入 apache htdocs 文件夹即可 如果您的 MPD
  • Python 中使用 lxml 进行 Schematron 验证:如何检索验证错误?

    我正在尝试使用 lxml 进行一些 Schematron 验证 对于我正在处理的特定应用程序 重要的是报告任何未通过验证的测试 这lxml文档 http lxml de validation html提到了存在validation repo
  • ADB Shell 输入事件

    之间的基本区别是什么adb shell input keyevent and adb shell sendevent 我应该使用哪一个来输入字符 我们传递给这两个命令的键码是否相同 By adb shell input keyevent 或
  • 如何防止无名结构\联合?

    我正在构建一个具有矩阵数据联合的类 但是 只有当我没有结构 联合的名称时 我才能对其进行编译 但是 如果警告级别更高 视觉工作室为四级 我会发出警告说 warning C4201 nonstandard extension used nam
  • 帮助我验证 url 是否应该接受 .me 域

    var tomatch http A Za z0 9 3 A Za z 3 if tomatch test theurl window alert URL OK return true 我尝试了这个正则表达式代码来验证 url 当我尝试验证
  • 这段代码是否受 C 标准保证?

    我读过 如果你声明两个这样的结构 struct Node int a b c struct DerivedNode struct Node base int d e f 然后你可以像这样使用指向它们的指针 struct DerivedNod
  • tf.sign 如何与反向传播一起工作?

    我从 TensorFlow 开始 尝试创建一个二进制网络 更具体地说 我正在寻找一个哈希网络 它将图像编码为大小为 n 的二进制向量 所以我有一个经典的网络 我对softmax之前的最后一层进行二值化 TensorFlow 提供了一个tf
  • WCF/Silverlight:为什么使用 ChannelFactory 而不是客户端?

    在继承的项目中 使用 ChannelFactory 而不是 Client 进行 WCF 调用 为什么要这么做 另外 缓存 ChannelFactory CreateChannel 调用的结果是否安全 还是应该每次创建一个新的结果 创建 WC
  • 在python中查找日期范围重叠

    我试图找到一种更有效的方法来根据特定列 id 在数据框中查找重叠的数据范围 每行提供的开始 结束日期 数据框按 来自 列排序 我认为有一种方法可以避免双重apply像我一样运行 import pandas as pd from dateti
  • docker-compose 日志记录不适用于 syslog 选项

    我有以下 docker compose 配置 version 3 services worker image image logging driver syslog options syslog address udp XXX papert
  • 如何创建文件名中包含空字节的文件?

    对于安全测试 我需要传递一个内容和文件名中包含空字符的文件 对于body内容来说 很容易使用printf printf Hello 00 Null gt containsnull txt xxd contains null 0000000
  • 为什么这里不省略复制构造函数?

    我正在使用 gcc 与 O2 这似乎是一个消除复制构造函数的直接机会 因为访问 a 中字段的值没有副作用 bar的副本foo 但复制构造函数is调用 因为我得到了输出meep meep include
  • 有人可以提供带有显式起源列表的 CorsPolicy 实现吗?

    参考SignalR 集线器 API 指南 http www asp net signalr overview guide to the api hubs api guide javascript client crossdomain 配置注
  • 从 JSON SQL 查询中删除反斜杠

    我正在使用 SQL Server 查询构造 JSON 对象 我对斜杠有疑问 而且我需要特定格式的数据 如下所述 实际输出中有斜线 我想从输出查询中消除斜杠 SELECT SELECT value cast ISNULL SP ACCOUNT
  • Facebook——使用 event 和 event_member 进行 FQL“加入”的最佳方式?

    在 Facebook 应用程序中 我需要获取用户在某个日期范围内的事件以及每个事件的回复状态 我可以很好地获取用户的事件 但目前我正在一次查找每个事件的 rsvp 状态 并且对于具有大量事件的人来说 该应用程序正在超时 我通过这种方式获取用
  • 使用 Java 通过 SSH 连接到 MySQL

    我想使用 Java 连接到 Amazon EC2 服务器上的 MySQL 数据库 我可以使用 Jsch 库创建 ssh 隧道并将端口转发到该服务器 但是连接到数据库总是以异常结束 java io EOFException 无法从服务器读取响
  • 使用knitr生成pdf时如何将R代码和图形保持在RMarkdown中的同一页面上

    RMarkdown 有没有办法强制 R 代码和它生成的图形出现在同一页面上 我正在使用 Knit pdf 例如 r ggplot df aes x x y y col sex f geom point ggtitle Data from C
  • Mongoose:保存为子文档关联数组与子文档数组

    我有一组需要保持持久性的文档 由于MongoDB处理多文档操作的方式 我需要将这组文档嵌入到容器文档中 以确保操作的原子性 这些数据非常适合键值配对 有什么办法可以代替这样做 var container new mongoose Schem