如何在mongoose模式中存储对象?

8

在 node.js 中,我有三个变量:

var name = 'Peter';
var surname = 'Bloom';
var addresses = [
    {street: 'W Division', city: 'Chicago'},
    {street: 'Beekman', city: 'New York'},
    {street: 'Florence', city: 'Los Angeles'},
];

还有模式:

var mongoose = require('mongoose')
  , Schema = mongoose.Schema;

var personSchema = Schema({
  _id     : Number,
  name    : String,
  surname : String,
  addresses : ????
});

什么类型的数据应该在schema中使用?如何最好地使用它?


你所描述的是对象数组,而不是单个对象。 - lukas_o
5个回答

5
您需要创建另一个mongoose架构:
var address = Schema({ street:字符串, city:字符串 });
地址的类型将是Array

2
解决保存数据的方法很简单,请查看下面的代码:

Adv.save({addresses: JSON.stringify(addresses)})

您的模式将如此

var personSchema = Schema({
 _id     : Number,
 name    : String,
 surname : String,
 addresses : String,
});

2
这种存储模式的唯一问题在于,如果我们想要查询此处的地址数据,会有一个问题。例如,获取在洛杉矶命中的结果列表,那么我们将无法查询这些记录。 - Richard Abear

2
//Your Schema is very easy like below and no need to define _id( MongoDB will automatically create _id in hexadecimal string)
var personSchema = Schema({
  name    : String,
  surname : String,
  addresses : [{
    street: String,
    city: String
  }]

var addresses= [
    {street: 'W Division', city: 'Chicago'},
    {street: 'Beekman', city: 'New York'},
    {street: 'Florence', city: 'Los Angeles'}
];
//Saving in Schema
var personData = new personSchema ({
  name:'peter',
  surname:'bloom',
  addresses:addresses  
})
personData.save();

希望这可以解决你的问题


1

你实际上正在存储一个数组。

var personSchema = Schema({
  _id     : Number,
  name    : String,
  surname : String,
  addresses : []
});

0

您可以在 personSchema 中使用 ref。

var personSchema = Schema({
  _id     : Number,\n
  name    : String,
  surname : String,
  addresses : [{ref:Adress}]
});

var address = Schema({street: String, city: String});


mongoose.model('PersonSchema', personSchema);
mongoose.model('Adress', adress);

'ref' 用于创建地址的引用,并在 personSchema 中使用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接