MongoDB 使用mongoose直接查询sub doc 的Id?
PHP中文网
PHP中文网 2017-05-02 09:19:25
0
1
654

我有一个schema:
这个schema有一个sub doc 叫address,插入address数据之后,address会自己有一个对应的_id.

我的问题是,每次查询这个address的时候,是否需要首先找到这个account,然后遍历account的address,或者可以直接通过address的_id来找到对应的address?

  var AccountSchema = new mongoose.Schema({
    email:     { type: String, unique: true },
    password:  { type: String},
    phone:     { type: String},
    name:      {type: String},
    address:   {type: [{
      name: { type: String},
      phone: { type: String},
      type: { type: String},
      addr: { type: String}
    }]},
  });
PHP中文网
PHP中文网

认证0级讲师

membalas semua(1)
给我你的怀抱

Pertama sekali, pemahaman anda tentang subDoc adalah salah subDoc juga seharusnya merupakan contoh yang dijana oleh Schema yang berasingan -> subdokumen ModelSchema

const AdressSchema = new mongoose.Schema({
      name: String,
      phone: String,
      type: String,
      addr: String
    })

const AccountSchema = new mongoose.Schema({
    email:     { type: String, unique: true },
    password:  String,
    phone:     String,
    name:      String,
    
    //重点在这里
    address:   [AdressSchema]
  })
Seperkara lagi, jika anda tidak mempunyai

, cara penulisan asal adalah salah Dan walaupun ia ditakrifkan, atribut 自定义的 SchemaTypes tidak boleh menunjuk ke objek type

address: {
    //这样就是绝对错误 
    type: [
        {
            name: { type: String},
            phone: { type: String},
            type: { type: String},
            addr: { type: String}
        }
    ]
}
Kerana

mongoose adalah sah secara lalai SchemaTypes hanya String, Number, Array, ObjectId, Mixed... dan mesti ada beberapa dalam dokumen, jika anda melakukannya not define Untuk sebarang Jenis tersuai, sebarang nilai lain selepas atribut jenis akan melaporkan ralat.

Jika anda tidak mahu mentakrifkan subdokumen, anda boleh melakukan sesuatu seperti ini:

const AccountSchema = new mongoose.Schema({
    email:     { type: String, unique: true },
    password:  String,
    phone:     String,
    name:      String,
    address:   {
        name: String,
        phone: String,
        adrType: String,        //这里用 adrType 替代你的 type, 避免和保留字重名
        addr: String
    }
  }
)
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!