Moogoose实践之:Schema写全很重要,不然会把时间浪费在调错上!

哎,今天浪费了很多时间在调用Moogoose的update函数上,我有一个很简单的文档结构,类似于:{name: xxx},MongoDB的驱动,我用了Moogoose,我的问题是,我想对该文档,增加一个属性,比如age,那么文档就变成:{name: xxx, age: 16}。相关代码如下:

NameCandidateSchema = new mongoose.Schema(
        name: String
)

    handleVoterVoteFor: (req, res)->
        voter = req.params.voter
        {id} = req.query

        query = {_id: id}
        update = {age: 16}
        NameCandidate.findOneAndUpdate(query, update,  (err, doc)=>
            if err then res.send(500, err)
            else
                console.log(doc)
                res.json(200, doc)
        )

问题是,age属性死活插入不到文档中去!白白花了2个小时,终于明白了,Schema里面忘记把age属性加进去了。。。汗!

那么,假如我想加入一个内嵌的文档,但是Key, Value不定,怎么办呢?举个例子,每个name,大家都可以对他投票,投票的记录放在同一个文档中,是一个内嵌的文档,key是投票人的名字,值是他投的票数,比如,对于puncha这个名字,张三、李四分别投了2票3票,那么该文档可以表示成: {name: 'puncha', votes: {'张三': 2, '李四', 3}}。那么Schema怎么定义呢?

mongoose = require('mongoose');
Schema = mongoose.Schema;

NameCandidateSchema = new mongoose.Schema(
        name: String
        votes: Schema.Types.Mixed
)

    handleVoterVoteFor: (req, res)->
        #console.log(req.query.name + req.query.id + req.query.score)
        voter = req.params.voter
        {id} = req.query

        queryClouse = {_id: id}
        updateClouse = {}
        updateClouse["votes.#{voter}"] = parseInt(score, 10)
        NameCandidate.update(queryClouse, updateClouse,  (err, numberAffected)=>
            if err then res.send(500, err)
            else
                console.log(numberAffected)
                res.json(200, numberAffected)
        )

看到没,要使用Schema.Mixed这个类型。BTW, 这里我用了update,其实和上面的findOneAndUpdate是没啥区别的,



转载于:https://www.cnblogs.com/puncha/p/3876867.html

库存预测新思路:AI架构师的图神经网络应用 用图神经网络(GNN)解决传统库存预测的“关联盲区”,让预测从“孤立商品”转向“商品网络”。传统库存预测的痛点分析;GNN的核心概念(图结构、消息传递);GNN在库存预测中的算法原理与代码实战;实际应用场景与未来趋势。背景:用超市老板的烦恼引出传统方法的问题;核心概念:用“商品朋友圈”比喻GNN的图结构和消息传递;算法原理:用数学公式和Mermaid流程图讲清楚GNN的工作流程;实战:用PyTorch Geometric写一个简单的库存预测模型; 阅读详情

相关推荐

从梯度泄露到数据复原:DLG与iDLG算法实战解析

本文深入解析了DLG与iDLG算法在梯度泄露与数据复原中的实战应用,揭示了联邦学习中的隐私风险。通过详细代码示例和实验数据,展示了如何从梯度中复原原始训练数据,并探讨了梯度压缩、差分隐私等防御措施。文章特别强调了iDLG算法在标签破解中的高效性,为AI安全领域提供了重要参考。

weixin_30552811的博客 191

Mongoose:Schema之路

说明:本文在个人博客地址为edwardesire.com,欢迎前来品尝。 Mongoose学习 这里的Mongoose当然不是图片上的萌物,它是一个MongoDB对象建模工具(object modeling tool),以前在sails上用的Waterline是ORM (Object Relational Mapper)。当使用Mongoose时,我们不在需要在数据库中创建好结构(Schem...

weixin_34097242的博客 361

Doris + Iceberg 实现高效数据湖分层:架构解析与最佳实践

本文深入解析了如何利用Doris与Iceberg构建高效的数据湖冷热分层架构。通过将高频访问的热数据存储在Doris中以实现毫秒级查询,同时将历史冷数据归档至低成本的Iceberg存储,该方案在保障查询性能的同时显著降低了总体拥有成本。文章详细阐述了从架构设计、自动化迁移到统一查询的最佳实践,为应对海量数据下的成本与性能平衡提供了实战指南。

weixin_29207533的博客 135

MongoDB(芒果数据库)学习(三)——Mongoose搭建及运用(Schemas、Model、Document)

Mongoose搭建以及基础

小梁的旅程 3193

Hypack 应用于地形测量的高级设置操作要领

Hypack 是业界公认最好的水文导航测量软件,是目前世界上应用广泛的专业测量疏浚软件。它能够接收,处理,存储和输出各种数据。Hypack支持绝大部分GPS,测深仪(国内如海鹰HY1603单波束测沙仪),多波束测深仪,旁扫声纳,涌浪补偿器,水位仪,验潮仪以及声速剖面仪。利用 Hypack 可以进行导航,单波束测量,多波束测量,旁扫测量以及疏浚实时监测等。软件界面友好,使用方便。本文简要阐述Hypack 应用于地形测量的几个重要操作要领。

中游鱼的博客 2794

planning模块(6)-参考线的平滑(二次规划)

上一篇已经介绍了采样点生成锚点数据的过程,并且将所有采样点生成的锚点数据设置到了平滑器中.接下来继续介绍使用二次规划平滑参考线的算法过程.从锚点数据中提取坐标存入raw_point2d,提取横向边界存入anchorpoints_lateralbound,将起点和终点的横向边界设置为0,防止车在起点和终点位置偏离车道中心线.

让复杂的问题变得更容易理解 787

Mongoose学习参考文档

前言:本学习参考文档仅供参考,如有问题,师请雅正 一、快速通道   1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 Entity : 由Model创建的实体,他的操作也会影响数据库 注意: 1.本学习文档采用严格命名方式来区别不同对象

那年的专栏 954

SAP_ABAP_SD_BAPI清单案例教程——销售订单开票_BAPI_BILLINGDOC_CREATEMULTIPLE_VF01_S4版本

SAP BAPI(Business Application Programming Interface)是SAP系统中的一组规范和标准,用于从SAP系统中获取数据、输入数据和更新数据。这些API允许开发者以编程方式与SAP系统交互,而无需编写大量的自定义代码。2.1 Copy代码 直接可使用。2.2 VF01开票。

java_zhong1990的专栏 2214

Mongoose - count和countDocuments方法

This method is deprecated. If you want to count the number of documents in a collection, e.g. count({}), use the estimatedDocumentCount() function instead. Otherwise, use the countDocuments() function...

seaalan的博客 1万+

从 SAP BTP trial 到第一个 CPI iFlow 的实操路线图

本文介绍了如何从零开始学习SAP CPI(现称SAP Integration Suite中的Cloud Integration能力)。主要内容包括:1)明确学习边界,建议使用SAP BTP trial账号进行个人练习,注意90天有效期限制;2)理解SAP BTP账号模型层级结构(Global Account→Subaccount→Space);3)详细说明申请trial账号流程,推荐选择Singapore区域以避免兼容问题;4)指导如何检查Entitlements和Quotas,强调应专注于SAP Inte

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 167

Jetson Thor平台JP7.0版本96712 GMSL相机驱动调试记录

摘要:本文档记录了在Thor Custom Board (JP7.0GA)上配置GMSL摄像头时遇到的视频流问题及调试过程。问题表现为视频设备(/dev/video11)能正常创建,但获取视频时出现"Internal data stream error",而相同配置在AGX Orin JP6.0上运行正常。通过梳理硬件拓扑、v4l2-ctl测试、提升时钟频率及分析内核日志,发现VI引擎未接收到帧数据包。调试步骤包括检查设备树冲突、调整I2C总线配置、修正通道名称,最终通过屏蔽传感器启动时

jzwjzw19900922的博客 1109

XML Schema的基本语法(转)

转自: http://www.blogjava.net/hanbiaoo/archive/2007/08/14/136707.html XSDL(XML Schema定义语言)由元素、属性、命名空间和XML文档种的其他节点构成的。 一、XSD中的元素 XSD文档至少要包含:schema根元素和XML模式命名空间的定义、元素定义。 1、schema根元素语法如下: <xsd:...

weixin_30780649的博客 335

Android 车载应用之快速入门

车载 Android 系统也被称为 Android Automotive OS,是对原始 Android 系统的一个功能扩充版本。与手机系统一样,Android Automotive OS 源代码完全开放,第三方供应商和汽车制造商可以官方源码的基础上自行开发和拓展,无论是编程语言还是各项接口,都与 Android 系统保持了一致。

xiangzhihong8的专栏 1112

moogoose学习

moogoose是Node js的一个库 用于在Node Js中更好的操作mongodb的数据操作  首先我们要下载moogoose的包 npm install moogoose 这里为了简单起见 我们在app.js中引入对数据库的链接 //数据库的链接 var mongoose = require("mongoose"); mongoose.Promise = global.Promis

不起眼的小学生 1326

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

NODE写后端学习

环境:node js 数据库:mongodb 需要插件:express corsmongoose npm i express cors mongoose 建议装 nodemon npm i -g nodemon 代码 const express = require('express') const mongoose = require('mongoose') app.use(...

qq_42091045的博客 675

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mongoose的基本用法

这里仅记录一下mongoose的基本用法,个人觉得以下这篇文章讲解的还算挺仔细的: http://cnodejs.org/topic/504b4924e2b84515770103dd使用mongoose的步骤:1.先安装mongoose模块npm install mongoose -save 2.连接数据库const moogoose=require('mongoose'); moogoose.

1130

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

mongoose

1.安装monogoose npm install mongoose -D 2.导入monogoose模块 var mongoose = require (' mongoose '); 3.连接数据库 mongoose.connect(' mongodb://主机名/数据库名称 ',( error ){ if( error ) throw error console.log(' dat...

weixin_33769207的博客 111

Mongoose基本操作

Mongoose基本操作

m0_74331185的博客 1604

moongoose对象无法新增删除属性

昨天用nodes中的moongoose去查询一个结果遇到一个大坑,这个坑貌似用moongoose可能会遇到。背景是这样的,我在nodejs中去查询document,得到的可以看作是一个对象list。在这个结果集中,我要去寻找这个结果中的某个属性是否和其他的结果重复,并给它添加一个属性作为标志。举例子,我们获得的结果就像是[{name:'neal',age:'18'},{name:'neal',age

neal1991的专栏 1583

mongodb使用简介

mongodb简介 在使用nodejs时候,需要存储一些简单json数据的情况下,很多人会推荐使用mongodb。mongodb是一个文档型数据库,在 sql 中,数据层级是:数据库(db) -> 表(table) -> 记录(record)-> 字段;在 mongodb 中,数据的层级是:数据库 -> collection -> document -> 字段。...

weixin_33964094的博客 125

解决moongose属性添加问题doc.productNum = 1; doc.checked = 1;

在做慕课商城项目将商品加入购物车时,自定义属性添加不上去 代码如下 doc.productNum = 1; doc.checked = 1;//选中 userDoc.cartList.push(doc);//将商品加入到用户名下 moongose模型中也已经定义了这两个属性 var userSchema = new moongoose.Schema({ "userId":String, ...

mx_is_bang的博客 485

mogoose

1.安装monogoose npm install mongoose -D 2.导入monogoose模块 var mongoose = require (' mongoose '); 3.连接数据库 mongoose.connect(' mongodb://主机名/数据库名称 ',( error ){ if( error ) throw error console.log(' d...

qq_43267350的博客 212

MongoDB 非关系型数据库

一、起步 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 二、安装MongoDB 官网下载地址并安装 配置安装目录下的bin到环境变量中去 如需进行测试可以使用: mongod -v 三、打开mongodb数据库 在键入mongod命令前需要改对应盘符的根目录下创建data/db目录 然后键入命令 D:

weixin_44955769的博客 864

mongoose操作数据库

 monogoose模块  实例需求分析  环境搭建  MongoDB CURD操作

ling_kedu的博客 291

mongoose的增删改查

Mongoose 的一切始于 Schema。每个 schema 都会映射到一个 MongoDB collection ,并定义这个collection里的文档的构成。这句话是引用mongoose文档的,因为这句话很清楚的说明了mongoose,它的每一个 schema 就是相当于一个collection,我们需要对这个集合里面的文档进行操作,mongodb是对数据库操作,而mongoose是对象操...

weixin_33989058的博客 234

CRUD using Mongoose使用Mongoose进行数据库操作

CRUD using Mongoose使用Mongoose进行数据库操作

m0_61388464的博客 490
上一篇: SAPI训练文件存储位置
下一篇: 硬盘被误格式化或Ghost还原后的数据恢复
badiu_30394251
博客等级 码龄11年 124粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值