相关疑难解决方法(0)

Mongoose填充嵌入式

我使用Mongoose.js并不能解决3级层次文档的问题.

有两种方法可以做到这一点.

首先 - 没有参考.

C = new Schema({
    'title': String,
});

B = new Schema({
    'title': String,
    'c': [C]
});

A = new Schema({
    'title': String,
    'b': [B]
});
Run Code Online (Sandbox Code Playgroud)

我需要显示C记录.我怎么能填充/找到它,只知道C的_id?

我试着用:

A.findOne({'b.c._id': req.params.c_id}, function(err, a){
    console.log(a);
});
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何从者返回一个只有我需要的对象的对象.

第二,如果使用refs:

C = new Schema({
    'title': String,
});

B = new Schema({
    'title': String,
    'c': [{ type: Schema.Types.ObjectId, ref: 'C' }]
});

A = new Schema({
    'title': String,
    'b': [{ type: Schema.Types.ObjectId, ref: 'B' }]
});
Run Code Online (Sandbox Code Playgroud)

如何填充所有B,C记录以获得层次结构?

我试着用这样的东西:

A
.find({}) …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose mongodb nosql node.js

31
推荐指数
4
解决办法
2万
查看次数

Mongoose填充子子文档

我在MongoDB中有这个设置

项目:

title: String
comments: [] // of objectId's
Run Code Online (Sandbox Code Playgroud)

评论:

user: ObjectId()
item: ObjectId()
comment: String
Run Code Online (Sandbox Code Playgroud)

这是我的Mongoose架构:

itemSchema = mongoose.Schema({
    title: String,
    comments: [{ type: Schema.Types.ObjectId, ref: 'comments' }],
});

Item = mongoose.model('items', itemSchema);

commentSchema = mongoose.Schema({
    comment: String,
    user: { type: Schema.Types.ObjectId, ref: 'users' },
});

Comment = mongoose.model('comments', commentSchema);
Run Code Online (Sandbox Code Playgroud)

这是我得到我的项目和评论的地方:

Item.find({}).populate('comments').exec(function(err, data){
    if (err) return handleError(err);
    res.json(data);
});
Run Code Online (Sandbox Code Playgroud)

如何使用相应的用户填充注释数组?由于每条评论都有一个用户ObjectId()?

javascript mongoose mongodb node.js

20
推荐指数
6
解决办法
2万
查看次数

如何填充嵌套虚拟?

我有一个数据集合(匹配),其中一个虚拟属性引用另一个集合(名册)。集合(名册)具有对集合(参与者)中另一个虚拟属性的引用。我已成功填充集合(名册)。但是,我无法填充集合(参与者)。

火柴

{
"_id": {
    "$oid": "5c1b99843a71d812af25b10d"
},
"type": "match",
"id": "0b0ad010-ee86-11e8-b29a-061fc5dc976c",
"relationships": {
    "rosters": {
        "data": [
            {
                "type": "roster",
                "id": "8dc6f770-ee88-11e8-b755-9d41e8e54ecc"
            },
            {
                "type": "roster",
                "id": "8dc6f774-ee88-11e8-b755-9d41e8e54ecc"
            }
        ]
    }

}
Run Code Online (Sandbox Code Playgroud)

}

花名册

 "_id": {
    "$oid": "5c1b99843a71d812af25b151"
},
"type": "roster",
"id": "f51f1250-ee87-11e8-a185-711497405867",
"relationships": {
    "participants": {
        "data": [
            {
                "type": "participant",
                "id": "f51f1251-ee87-11e8-a185-711497405867"
            },
            {
                "type": "participant",
                "id": "f51f1252-ee87-11e8-a185-711497405867"
            },
            {
                "type": "participant",
                "id": "f51f1253-ee87-11e8-a185-711497405867"
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所拥有的。

Match.find([])
  .populate({
    path: 'rosters',  // virtual
    populate: { …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose node.js

6
推荐指数
1
解决办法
1825
查看次数

Mongoose - 使用.populate访问嵌套对象

模式定义

Team.js

var TeamSchema = new Schema({
    // Team Name.
    name: String,
    lead: String,
    students :type: [{
      block : Number,
      status : String,
      student : {
        type: Schema.ObjectId,
        ref: 'Student'
    }]
});
Run Code Online (Sandbox Code Playgroud)

Student.js

var StudentSchema = new Schema({
   name: String,
   rollNo : Number,
   class : Number
});
Run Code Online (Sandbox Code Playgroud)

如何填充"学生"以获得输出,如下所示:

球队

{
    "__v": 1,
    "_id": "5252875356f64d6d28000001",
    "students": [
        {
            "__v": 1,
            "_id": "5252875a56f64d6d28000002",
             block : 1,
             status : joined,
            "student": {
                "name": Sumeeth
                "rollNo" : 2
                "class" : 5
            }
        },
        { …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

5
推荐指数
1
解决办法
7042
查看次数

使用KeystoneJs进行Mongoose两级人口

我需要用Mongoose/Keystone填充两个级别,但是已经遇到了障碍.

我有3个型号:地区,国家和城市.地区包含国家和国家/地区包含城市

我的模特:

型号区域:

var Region = new keystone.List('Region');

Region.add({
      name: {type: Types.Text}
    , countries: {type: Types.Relationship, ref: 'Country', many: true}
});
Run Code Online (Sandbox Code Playgroud)

模范国家

var Country = new keystone.List('Country');

Country.add({
      name: {type: Types.Text}
    , cities: {type: Types.Relationship, ref: 'City', many: true}
});
Run Code Online (Sandbox Code Playgroud)

模范城市

var City = new keystone.List('City');

City.add({
      name: {type: Types.Text}
});
Run Code Online (Sandbox Code Playgroud)

查询:

keystone.list('Region').model.find()
    .populate('countries')
    .exec(function(err, regions){
        console.log(regions)
    });
Run Code Online (Sandbox Code Playgroud)

产量:

    {
        name: 'Oceania',

        countries: [
            {
                _id: 55d9b260415baa6958ac04c1   
                name: 'Australia',
                cities: [
                    _id: 55d9b260415baa6958ac04c2,
                    _id: 55d9b260415baa6958ac04c3,
                    _id: 55d9b260415baa6958ac04c4
                ]
            }, …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js keystonejs

2
推荐指数
1
解决办法
1072
查看次数

标签 统计

mongoose ×5

node.js ×5

mongodb ×4

javascript ×3

keystonejs ×1

nosql ×1