mongo中一个文档的字段是list,怎么删除list中的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongo中一个文档的字段是list,怎么删除list中的数据相关的知识,希望对你有一定的参考价值。

参考技术A 通过软件操作。
通过cmd打开一个命令行窗口。通过mongo命令连接本地MongoDB数据库服务。注意:本地MongoDB服务需要工作在27017端口上,图示,连接成功即可。
查看需要处理的集合:showdb命令查看所有数据库。use目标数据库,切换到目标数据库中。showcollections查看当前数据库下所有集合信息。

Mongo:引用同一集合中另一个文档的_id字段

【中文标题】Mongo:引用同一集合中另一个文档的_id字段【英文标题】:Mongo: reference to _id Field of another document within the same collection 【发布时间】:2021-02-22 01:25:10 【问题描述】:

我刚刚开始在 MongoDB 中迈出第一步,所以如果我的问题对你来说听起来有点愚蠢,请原谅。我真的尽力在谷歌上搜索答案,但到目前为止还没有找到。

我想问一下处理以下情况的最佳做法是什么。例如,我收集了“公司”(表示法人实体列表)。其中的每个文档都将具有相同的公共字段,例如“name_official”、“name_short”、“name_group”、“name_parent”等。字段“name_parent”应该引用同一集合中的母公司(不同的文档)。由于并非所有收集的公司都应该有任何母公司,逻辑上这个字段应该是“必填:假”。我知道我可以轻松地将此字段的值类型保留为字符串。但是是否可以将 ObjectID 类型分配给该字段,该字段将引用包含母公司信息的文档的 _id 字段?

提前感谢您的帮助!

/* 更新 */ 在尝试了填充我的 MongoDB 的不同方法(从 csv 导入,通过我的应用程序中的“创建新公司”表单,并在专门编写的“populatedb.js”模块的帮助下)后,我终于得出结论,这样的模式(使用同一集合中的跨文档引用)不允许将“name_parent”字段留空。即使您明确定义它“必需:假”。因此,下面的说明不起作用。 comp_ParentName: type: Schema.Types.ObjectId, ref: 'company', required: false

请就如何处理这种关系的最佳做法提出其他建议?我想要再次在同一个集合“公司”中将母公司(一个法人实体和一份文件)引用到子公司(单独的法人实体和单独的文件)。

真的需要帮助!提前致谢!

【问题讨论】:

【参考方案1】:

所以你有类似这个的东西吗? :-

/** Dependencies */
// Mongoose
const mongoose = require('mongoose')

/** Data Schema */
const CompaniesSchema = new mongoose.Schema(
  // Name Official
  name_official:  type: String, trim: true, required: true ,
  // Name Short
  name_short:  type: String, trim: true, required: true ,
  // Name Group
  name_group:  type: String, trim: true, required: true ,
  // Name Parent
  name_parent:  type: mongoose.Schema.Types.ObjectId, ref: "Companies" 
)

/** Export */
module.exports = mongoose.model('Companies', CompaniesSchema)

那么它应该已经工作了

【讨论】:

感谢您的快速回答@lala。我目前正在通过将“公司”集合从 csv 文件导入 MongoDB 来试验它。我使用这种方法面临的问题是,一旦 csv 中的“name_parent”为空,MongoDB Compass 拒绝导入集合:( 当我明确要求它将字段保存为 ObjectID 类型时会发生这种情况。这就是我提出问题的原因:我猜MongoDB不支持同一个集合中的文档间引用... 也许这可以帮助你ref 感谢@lala。您实际上确认了这样的引用是可能的。所以这意味着我从 csv 文件导入数据时遇到问题。 Compass 不希望在 csv 文件中处理 ObjectID 数据类型的空字段......所以这是另一个话题;) 是的。也许您在将数据导入csv 文件之前或以某种方式添加另一层服务或实用程序以检查是否存在ObjectId

以上是关于mongo中一个文档的字段是list,怎么删除list中的数据的主要内容,如果未能解决你的问题,请参考以下文章

请教下mongo的模糊搜索中字段有特殊符号怎么办

spring data mongo使用@DBRef,怎么查询指定字段的集合

使用rockmongo怎么导出部分数据

mongo ttl索引

python 列表删除元素问题?

用PHP查询mongo数据时,条件是某个字段(A为数组)不为空,但是有的记录中并没有字段A,这个条件怎么写?