使用 mongoose Schema 向已声明的 MongoDB 对象添加值
Adding value to already declared MongoDB object with mongoose Schema
我是 MongoDB 和猫鼬的新手。我正在尝试创建一个 Node & MongoDB 拍卖应用程序。所以既然它实际上是一个在线拍卖,用户应该可以为物品出价。我成功完成了用户注册、登录页面和身份验证过程,但是,我有点卡在投标页面。
我使用 mongoose 创建了一个架构,每个拍卖项目都保存在数据库中。我想在 MongoDB 中的同一对象中添加每个出价的用户的名称和价格,如下所示:
{
name: "valuable vase from 1700s",
owner: "John Doe",
itemId: 100029,
bids: {
100032: 30000,
100084: 34000
}
}
因此每个用户都会有像 100032: 30000
这样的 ID,当他们出价时,他们的“帐户 ID:价格”将被添加到项目的数据库对象中的 bids
下。
我做了一些研究并找到了一些解决问题的方法,但我想知道我想做的事情是否可行,是否是正确的解决方案。
谢谢你给我时间!
您决定实现功能的方式有点复杂。
这并非不可能,但更好的方法是使用对象数组而不是像这样的单个对象:
{
name: '',
..
..
bids: [{
user: 100032,
price: 30000
}, {
user: 100084,
price: 34000
}]
}
确实有几种方法可以实现您想要的。
在我看来,一个名为 ItemBids 的集合,其中每个文档都包含此数据结构,将使您受益最大。
{
itemId: ObjectId # reference to the item document
accountId: ObjectId # reference to the account
bid: Number # the bid value
}
此模式适合您的情况,因为您可以根据需要轻松查询出价 -
可以获取所有的账号出价,可以获取所有的商品出价,可以按出价与原生Mongo排序
每次出价时,您都会向该集合中插入一个新文档。
另一个选项是在项目对象中嵌入一组 Bids 对象。
每个出价对象应包括:
bids: [{
account: ObjectId("") # This is the account
price: Number
}]
这里的缺点是查询和访问它需要更复杂的查询。
您可以阅读有关注意事项的更多信息
这里:
https://docs.mongodb.com/manual/core/data-model-design
https://coderwall.com/p/px3c7g/mongodb-schema-design-embedded-vs-references
我是 MongoDB 和猫鼬的新手。我正在尝试创建一个 Node & MongoDB 拍卖应用程序。所以既然它实际上是一个在线拍卖,用户应该可以为物品出价。我成功完成了用户注册、登录页面和身份验证过程,但是,我有点卡在投标页面。
我使用 mongoose 创建了一个架构,每个拍卖项目都保存在数据库中。我想在 MongoDB 中的同一对象中添加每个出价的用户的名称和价格,如下所示:
{
name: "valuable vase from 1700s",
owner: "John Doe",
itemId: 100029,
bids: {
100032: 30000,
100084: 34000
}
}
因此每个用户都会有像 100032: 30000
这样的 ID,当他们出价时,他们的“帐户 ID:价格”将被添加到项目的数据库对象中的 bids
下。
我做了一些研究并找到了一些解决问题的方法,但我想知道我想做的事情是否可行,是否是正确的解决方案。
谢谢你给我时间!
您决定实现功能的方式有点复杂。
这并非不可能,但更好的方法是使用对象数组而不是像这样的单个对象:
{
name: '',
..
..
bids: [{
user: 100032,
price: 30000
}, {
user: 100084,
price: 34000
}]
}
确实有几种方法可以实现您想要的。
在我看来,一个名为 ItemBids 的集合,其中每个文档都包含此数据结构,将使您受益最大。
{
itemId: ObjectId # reference to the item document
accountId: ObjectId # reference to the account
bid: Number # the bid value
}
此模式适合您的情况,因为您可以根据需要轻松查询出价 - 可以获取所有的账号出价,可以获取所有的商品出价,可以按出价与原生Mongo排序
每次出价时,您都会向该集合中插入一个新文档。
另一个选项是在项目对象中嵌入一组 Bids 对象。 每个出价对象应包括:
bids: [{
account: ObjectId("") # This is the account
price: Number
}]
这里的缺点是查询和访问它需要更复杂的查询。
您可以阅读有关注意事项的更多信息 这里: https://docs.mongodb.com/manual/core/data-model-design https://coderwall.com/p/px3c7g/mongodb-schema-design-embedded-vs-references