【问题标题】:Populate MongoDB Document schema object format using Node and MongoosJS使用 Node 和 MongoosJS 填充 MongoDB 文档模式对象格式
【发布时间】:2013-08-15 03:57:33
【问题描述】:

现在我已经使用这个填充工作

{
    "_id": {
        "$oid": "520953dde4b00c03eeb39950"
    },
    "username": "jdoe",
    "fname": "Jave",
    "lname": "Doe",
    "role": "2",
    "pinned": [
        "5208ed90e4b0b41ab826ac9f",
        "5208edb2e4b0b41ab826aca1"
    ],
    "apps": [
        "5208ed90e4b0b41ab826ac9f",
        "5208edb2e4b0b41ab826aca1",
        "5208ee29e4b0b41ab826aca7"
    ]
}

然后引用类似这样的应用架构

{
    "_id": {
        "$oid": "5208edb2e4b0b41ab826aca1"
    },
    "name": "My Application",
    "route": "myapp",
    "icon": "http://placehold.it/80x80&text=[App]",
    "rating": 4,
    "description": "Bacon ipsum dolor sit amet nulla ham qui sint exercitation eiusmod commodo, chuck duis velit. Aute in reprehenderit, dolore aliqua non est magna in labore pig pork biltong."
}

我正在使用这样的模式进行填充

var UsersSchema = Schema({
        username: String,
        fname: String,
        lname: String,
        role: String,
        apps: [{type:ObjectId, ref: "applications"}]
    }, { collection : 'user' });

var ApplicationsSchema = new mongoose.Schema({}, { collection : 'applications' });



var User = mongoose.model('user', UsersSchema);
   var Applications = mongoose.model('applications', ApplicationsSchema);

并像这样执行它。

User.findById(id, items , function(err, doc){
                callback(doc);
            }).populate("apps");

这是我的问题 我该怎么做,或者是否可以像这样设置我的 MongoDB

{
    "_id": {
        "$oid": "520953dde4b00c03eeb39950"
    },
    "username": "abritez",
    "fname": "Jave",
    **"pinned": true,**        
    "lname": "Doe",
    "role": "2",
    "apps": [
        {id : "5208ed90e4b0b41ab826ac9f", pinned:true},
        {id : "5208edb2e4b0b41ab826aca1", pinned:true},
        {id : "5208ee29e4b0b41ab826aca7", pinned:false}
    ]
}

我应该如何设置我的架构并填充执行?或者这是不可能的?我希望它看起来像这样。

{
  "_id": "520953dde4b00c03eeb39950",
  "fname": "Jane",
  "lname": "Doe",
  "role": "2",
  "apps": [
    {
       "pinned": true,                         
       "_id": "5208ed90e4b0b41ab826ac9f",
      "name": "App A",
      "route": "appA",
      "icon": "http://placehold.it/80x80&text=[App]",
      "rating": 4,
      "description": "Bacon ipsum dolor sit amet nulla ham qui sint exercitation eiusmod commodo, chuck duis velit. Aute in reprehenderit, dolore aliqua non est magna in labore pig pork biltong."
    },
    {
      "_id": "5208edb2e4b0b41ab826aca1",
      "pinned": true,
      "name": "App B",
      "route": "appB",
      "icon": "http://placehold.it/80x80&text=[App]",
      "rating": 4,
      "description": "Bacon ipsum dolor sit amet nulla ham qui sint exercitation eiusmod commodo, chuck duis velit. Aute in reprehenderit, dolore aliqua non est magna in labore pig pork biltong."
    },
    {
      "_id": "5208ee29e4b0b41ab826aca7",
      "name": "App C",
      "pinned": true,
      "route": "appC",
      "icon": "http://placehold.it/80x80&text=[App]",
      "rating": 4,
      "description": "Bacon ipsum dolor sit amet nulla ham qui sint exercitation eiusmod commodo, chuck duis velit. Aute in reprehenderit, dolore aliqua non est magna in labore pig pork biltong."
    }
  ]
}

【问题讨论】:

    标签: mongodb mongoose mlab


    【解决方案1】:

    结果非常简单,使用点符号作为参数,并对我使用的架构进行了一些调整。

    User.find({}, function(err, doc){
                    callback(doc);
                }).populate("apps.id");
    

    我现在得到了

    {
      "_id": "520bb759e4b0845c7706b271",
      "fname": "Jane",
      "lname": "Doe",
      "role": "2",
      "apps": [
        {
          "id": {
            "_id": "5208ed90e4b0b41ab826ac9f",
            "name": "App",
            "route": "app",
            "icon": "http://placehold.it/80x80&text=[App]",
            "rating": 4,
            "description": "Bacon ipsum dolor sit amet nulla ham qui sint exercitation eiusmod commodo, chuck duis velit. Aute in reprehenderit, dolore aliqua non est magna in labore pig pork biltong."
          },
          "pinned": true
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 2014-12-03
      • 2020-03-23
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 2019-11-08
      相关资源
      最近更新 更多