当前位置: 首页 > 后端技术 > Node.js

持续更新mongoose详情合集

时间:2023-04-03 19:27:53 Node.js

宣传mongoose中文文档翻译招聘https://github.com/ssshooter/...方法与静态的区别来自这个schema.Schema.prototype.static()将静态“类”方法添加到从这个模式编译的模型中。也就是说method用于instance(文档),static用于Model。内联和填充的区域嵌入带有嵌入数据的文档总大小通常不会超过16MB的存储空间(BSON限制),否则(作为指南)具有包含500个或更多条目的数组。嵌入的数据通常不需要频繁更改.因此,您可以忍受来自反规范化的“重复”,而不会导致需要在许多父文档中使用相同信息更新那些“重复”,只是为了调用更改。相关数据经常与父文档关联使用.这意味着如果你的“读/写”案例几乎总是需要对父母和孩子“读/写”那么嵌入数据以进行原子操作是有意义的。引用相关数据总是会超过16MBBSON限制。您始终可以考虑“分桶”的混合方法,但不能违反主文档的一般硬限制。常见的情况是“发布”和“评论”,其中“评论”活动预计会非常大。相关数据需要定期更新。或者本质上是您“规范化”的情况,因为该数据在许多父母之间“共享”并且“相关”数据更改频繁以至于不切实际更新每个出现“子”项目的“父”中的嵌入项目。更简单的情况是只引用“子”并进行一次更改。读写之间有明显的分离。在这种情况下,也许你在阅读“父母”时并不总是需要“相关”信息,或者在写给孩子时不需要总是改变“父母”,可能有充分的理由将模型作为参考分开。此外,如果有人们普遍希望一次更新许多“子文档”,其中这些“子文档”实际上是对另一个集合的引用,那么当数据在单独的collection.mongoDB原子操作相关的Atomicity和Transactions一对一,一对多的数据删除参考账户锁定机制AccountLockingfind().then()andfind().exec().then()区别exec()参数[operation]?String|Function?[callbackfunction]?Function?可选参数取决于被调用的函数return?Promise?执行一个querythen()参数[resolve]?Function?[reject]?Function?return?Promise?执行一个查询,返回一个promise,doc参数是resolved状态,err参数是rejected状态//是不是晕了,源码其实是?!Query.prototype.then=function(resolve,reject){returnthis.exec().then(resolve,reject);};也就是说,如果你不需要控制具体的操作,直接调用then方法会帮你省去exec这一步。需要注意的是exec()和find()都可以,但是find()不是Promise。mongoose分页操作skip+limit当然可以,但是Berry有下面的方法效率更高:12,类型:“下一个”,firstId:“57762a4c875adce3c38c6645”,lastId:“57762a4c875adce3c38c6675”};变种条件={};var排序={_id:1};if(req.body.type=="next"){条件._id={$gt:req.body.lastId};}elseif(req.body.type=="prev"){sort={_id:-1};condition._id={$lt:req.body.firstId};}varquery=Model.find(condition,{},{sort:sort}).limit(req.body.limit);query.exec(function(err,properties){returnres.json({"result":结果);});