文档章节

mongoose 使用populate 需要注意的问题

造化玉碟
 造化玉碟
发布于 2014/06/24 16:04
字数 351
阅读 6626
收藏 2
点赞 1
评论 0

    So far we've created two Models. Our Person model has it's stories field set to an array of ObjectIds. The refoption is what tells Mongoose which model to use during population, in our case the Story model. All _ids we store here must be document _ids from the Story model. We also declared the Story _creator property as aNumber, the same type as the _id used in the personSchema. It is important to match the type of _id to the type of ref.

    Note: ObjectId, Number, String, and Buffer are valid for use as refs

    今天在使用mongoose的populate来查询ref的文档,一直查不到,花了整整一天时间了,只怪没有看完上面的描述。

   1.  在文档关联使用ref一定要注意,关联的那个model只能匹配_id这个字段,你要是搞个自动生成的啥的一概无效。列举一下吧:

var _User = new Schema({
    _id:Number,// 只支持ObjectId,Number,String,Buffer,就这几个引用类型,ref匹配的只有这个_id
    name:String,
    age:Number
});

var _Comment = new Schema({
    comments:[{
        text:String,
        created_by:{type:Number,ref:'User'}//这个User是model名称,数据类型要于_id的数据类型一致。
    }]
})

var userModel = mongoose.model('User',_User);
var commentsModel = mongoose.model('Comment',_Comment);

// 查询

commentModel.findOne({ })
    .populate('comments.created_by')
    .exec(function (err, commets) {
            console.log(err,commets);
    })

   2.  populate(ref1,ref2) ref1和ref2在源文档的顺序必须一致。

    意思是说在find后找到的文档如果使用ref,必须按照顺序查找引用。

看来文档仔细看是非常重要的。免得浪费精力时间。


© 著作权归作者所有

共有 人打赏支持
造化玉碟
粉丝 43
博文 42
码字总数 26950
作品 0
海淀
前端工程师
Mongoose 使用之 Population

何为 Population 用过 MongoDB 的人应该都知道它是没有关系型数据库里的 join 特性的,这意味着当我们使用 MongoDB 读取某个 document 及其关联的 document 的字段的时候,变得尤为麻烦。 基...

陈纪年 ⋅ 2013/06/16 ⋅ 2

mongoose 查询操作的高级应用

对于mongoose操作集合的方便之处确实不一般,但主要还是你在引用中对集合的设计,不过mongoose在使用ref关联集合的时候有限制和查出的集合的组合问题有点麻烦。不过不要紧,简单易用就行。 ...

造化玉碟 ⋅ 2014/07/15 ⋅ 0

MongooseJS 4.2.5 发布,MongoDB 连接包

MongooseJS 4.2.5 发布,此版本主要是 bug 修复: fixed; handle setting fields in pre update hooks with exec #3549 upgraded; ESLint #3547 ChristianMurphy fixed; bluebird unhandled ......

oschina ⋅ 2015/11/10 ⋅ 0

MongooseJS 4.3.5 发布,MongoDB 连接包

MongooseJS 4.3.5 发布,此版本更新内容如下: fix(query): throw when 4th parameter to update not a function #3741 kasselTrankos fix(document): separate error type for setting an ......

oschina ⋅ 2016/01/10 ⋅ 0

MongooseJS 4.5.6 发布,MongoDB 连接包

MongooseJS 4.5.6 发布了,本次发布改进记录如下: fix(schema): don't overwrite createdAt if it isn't selected #4351 tusbar docs(api): fix link to populate() and add a new one fro......

oschina ⋅ 2016/07/24 ⋅ 0

mongoose populate

mongoose populate用于对外键(objectid)字段的扩展,省去前段二次查询数据库的麻烦。 参考:http://mongoosejs.com/docs/populate.html 有2个特殊的用法: 1. 对objectid数组的populate,这...

nevermore1981 ⋅ 2016/05/23 ⋅ 0

如何参与新项目和老项目?

有人质问我,说我带他们的方法矛盾 之前是新项目,我让他们在项目里学,不要自学 现在是已有项目,我让他们在外面学,不让在里面练习 我真的是矛盾的么?我想有必要来理解一下开发里的大和小...

i5ting ⋅ 2015/08/08 ⋅ 2

Mongoose 4.4.14 发布,MongoDB 连接包

Mongoose 4.4.14 发布了,Mongoose 是基于nodejs,使用javascript编程,连接mongodb数据库的软件包,使mongodb的文档数据模型变的优雅起来,方便对mongodb文档型数据库的连接和增删改查等常规...

oschina ⋅ 2016/04/28 ⋅ 0

MongooseJS 5.1.5 发布,MongoDB 连接包

MongooseJS 5.1.5 发布了。MongooseJS 是使用 JavaScript 编程,连接 MongoDB 数据库的软件包,使 MongoDB 的文档数据模型变的优雅起来,方便对 MongoDB 文档型数据库的连接和增删改查等常规...

达尔文 ⋅ 06/12 ⋅ 0

MongooseJS 4.8.3 发布,MongoDB 连接包

MongooseJS 4.8.3 发布了。Mongoose 基于 Nodejs,使用 JavaScript 编程,连接 MongoDB 数据库的软件包,使 MongoDB 的文档数据模型变的优雅起来,方便对 MongoDB 文档型数据库的连接和增删改...

两味真火 ⋅ 2017/02/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

看东方明珠新媒体如何基于阿里视频云,构建完整的视频OTT平台SaaS服务

摘要: 东方明珠新媒体如何基于阿里云,搭建了面向第三方的视频SaaS服务?6月8日,上海云栖大会视频专场中,东方明珠新媒体股份有限公司云计算中心的副总周少毅带来了《东方明珠视频云》为题...

阿里云云栖社区 ⋅ 22分钟前 ⋅ 0

C#调用WebService实例和开发 VS2013

简单的理解就是:webservice就是放在服务器上的函数,所有人都可以调用,然后返回信息。 Web Service的主要目标是跨平台的可互操作性。为了实现这一目标,Web Service 完全基于XML(可扩展标...

布衣大侠 ⋅ 25分钟前 ⋅ 0

基于FlumeNG+Kafka+ElasticSearch+Kibana的日志系统

环境准备 1.服务器概览 hostname ip 操作系统 说明 安装内容 node1.fek 192.168.2.161 centos 7 node1节点 nginx,jdk1.8, flumeNG, elasticsearch slave1 node2.fek 192.168.2.162 centos ......

张shieppp ⋅ 25分钟前 ⋅ 0

问答网站已成过去,深度问答社区才是当下

曾几何时,各类问答网站数不胜数,从百度知道这类综合型问答网站到各种垂直细分的问答网站,都有不少,但到了移动互联网时代,很明显的一大趋势是,网站整体的流量都在下滑,随着移动智能设备...

ThinkSNS账号 ⋅ 28分钟前 ⋅ 0

Android平台架构(ART)

Android平台架构(ART) 本文目的:准确表述Android平台架构 本文转载自[Android官网] 本文定位:学习笔记 学习过程记录,加深理解。也希望能给学习的同学一些灵感 本文更新时间:2018.06.22(...

lichuangnk ⋅ 30分钟前 ⋅ 0

看东方明珠新媒体如何基于阿里视频云,构建完整的视频OTT平台SaaS服务

摘要: 东方明珠新媒体如何基于阿里云,搭建了面向第三方的视频SaaS服务?6月8日,上海云栖大会视频专场中,东方明珠新媒体股份有限公司云计算中心的副总周少毅带来了《东方明珠视频云》为题...

猫耳m ⋅ 31分钟前 ⋅ 0

Java 动态代理 原理解析

概要 AOP的拦截功能是由java中的动态代理来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标...

轨迹_ ⋅ 34分钟前 ⋅ 0

js 获取当前时间

var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1970-????)myDate.getMonth(); //获取当前月份(0-11,0代表1月)myDate...

夜醒者 ⋅ 40分钟前 ⋅ 0

windows删除或修改本地Git保存的账号密码

在win10或者win7都是一样的步骤: (一)进入控制面板(二)选择用户账户(三)选择管理你的凭据(四)选择Windows凭据(五)选择git保存的用户信息(六)选择编辑或者进...

果树啊 ⋅ 40分钟前 ⋅ 0

8个基本的Docker容器管理命令

前言: 在这篇文章中,我们将带你学习 8 个基本的 Docker 容器命令,它们操控着 Docker 容器的基本活动,例如 运行run、 列举list、 停止stop、 查看历史纪录logs、 删除delete 等等。文末福...

java高级架构牛人 ⋅ 42分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部