使用Node和MongoosJS填充MongoDB文档模式对象格式

使用Node和MongoosJS填充MongoDB文档模式对象格式,mongodb,mongoose,mlab,Mongodb,Mongoose,Mlab,现在我已经用这个来填充工作了 { "_id": { "$oid": "520953dde4b00c03eeb39950" }, "username": "jdoe", "fname": "Jave", "lname": "Doe", "role": "2", "pinned": [ "5208ed90e4b0b41ab826ac9f", "5208edb2e4b0b41ab826aca1"

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

{
    "_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);
{
    "_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}
    ]
}
像这样执行

User.findById(id, items , function(err, doc){
                callback(doc);
            }).populate("apps");
{
  "_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

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);
{
    "_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}
    ]
}
我应该如何设置模式并填充执行?或者这是不可能的?我希望它看起来像这样

User.findById(id, items , function(err, doc){
                callback(doc);
            }).populate("apps");
{
  "_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."
    }
  ]
}

通过使用点表示法作为参数,并对我使用的模式进行一些调整,结果变得非常简单

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
    }
  ]
}