首页 > 解决方案 > 如何在猫鼬中将对象保存为子集合引用的子对象?

问题描述

我已经搜索了两天,无法为我的问题找到提示或解决方案。

在 Firebase 中,我们使用 db 引用和子引用将对象存储在特定路径和集合中。我想在 mongodb 和节点应用程序中做同样的事情。让我用例子来解释我的问题。

我有 mongodb,其中包含用户、消息、订单的集合。

消息模型

'use strict';
 var mongoose = require('mongoose'),
    Schema = mongoose.Schema,
    ObjectId = Schema.ObjectId;

var messageSchema = mongoose.Schema({
    ObjectId: ObjectId,
    sender_id: String,
    receiver_id: String,
    sender_name: String,
    receiver_name: String,
    time_stamp: String,
    message_text: String,
    is_seen: String,
    channel_id: String,
    message_type: String
})
;
var Message = mongoose.model('Message', messageSchema);
var exports = module.exports = Message;

现在我想使用消息作为消息/RUNTIME_GENERATED_ID/消息的子级。

在firebase中,我只是放置参考并保存数据,如果没有同名的子集合,firebase会自动创建子集合。我想在 mongodb 中使用 mongoose 做同样的事情。

标签: javascriptnode.jsmongodbfirebasemongoose

解决方案


以下是可以解决您的问题的两个简单选项: 1)在您的集合中添加 parent_id 字段,并在 parent_id 中保存父消息文档的 mongo 对象 ID。

2)您可以创建数组类型的child_messages 属性,并且可以将子消息完整文档推送到child_message 数组中。

我希望它有所帮助。


推荐阅读