当前位置: 首页 > 知识库问答 >
问题:

MongoDB-有没有更好的方法来存储对象列表?

隆扬
2023-03-14

假设我有一个用户模式/模型,用户有一个朋友列表。Mongoose希望您将好友列表(外键/ObjectID类型)存储为数组,对吗?这意味着如果我想通过ID找到我的朋友,Mongoose将搜索数组,直到找到具有我想要的ID的朋友的第一个实例。那似乎真的是时间低效,不是吗?有更好的办法吗?

const FriendSchema = new Schema({
  username: { type: String, required: true, unique: true },
});

const UserSchema = new Schema({
  username: { type: String, required: true, unique: true },
  friends: [FriendSchema],
});

共有1个答案

袁致远
2023-03-14

使用ref引用另一个模式中的文档,并调用populate获取引用的文档。

// friend.model.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const FriendSchema = new Schema({
  username: { type: String, required: true, unique: true },
});
module.exports = mongoose.model('Friend', FriendSchema);
// user.model.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const UserSchema = new Schema({
  username: { type: String, required: true, unique: true },
  friends: [{ type: Schema.Types.ObjectId, ref: 'Friend' }],
});
module.exports = mongoose.model('User', UserSchema);
const User = require('user.model.js');

User.find(...)
  .populate('friends')
  .exec()
 类似资料:
  • 除了把它们全部输入外,还有没有更好的方法在字符串中列出它们?

  • 除了把它们全部输入外,还有没有更好的方法在字符串中列出它们?

  • 我有一个结构如下的JSON: 当我用下面的代码反序列化对象时,引用对象列表“item”给出了错误:“JSONMappingException:Can not反序列化java.util.ArrayList实例out of START_OBJECT token” 对于我来说,在一次调用中重新获得父对象Firebase和它们的子对象,对json来说,最好的POJO是什么?

  • 问题内容: 有没有一种方法可以序列化angularjs的功能? 我的帖子现在看起来像这样。 问题答案: 这不是使用AngularJS访问表单数据的方式。表单中的数据应在范围内绑定。 因此,使用一个对象,例如$ scope.formData,它将包含您的所有数据结构,然后应使用ng-model将每个表单元素绑定到此对象。 例如: http://jsfiddle.net/rd13/AvGKj/13/

  • 问题内容: 可以将数据表以某种方式传递到SQL Server 2005或2008吗? 我知道将XML传递到SP的标准方法。而且,可以通过某种方式轻松地将数据表转换为XML。 将.NET对象传递到SP中怎么办?那可能吗 ? 我记得曾经听说过SQL和CLR在2008年以某种方式一起工作,但我从未理解。。也许这意味着您可以在存储过程中引用.NET对象? 问题答案: 您可以在SQL中创建用户定义的表类型。

  • 问题内容: 是否有一个很好的方法来Map 获取和忽略案件? 问题答案: TreeMap扩展了Map并支持自定义比较器。 字符串提供默认的不区分大小写的比较器。 所以: 比较器不考虑区域设置。在其JavaDoc中阅读有关它的更多信息。