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

Mongo-基于用户名[重复]从一个集合中的多个数组中删除多个元素

陶成济
2023-03-14

我收集了一组诈骗电话号码,其中包含来自不同用户的评论。每个用户都有一个唯一的显示名称。我正在尝试删除所有特定于该用户名的注释。到目前为止,我可以通过以下方式找到包含该特定用户名注释的文档:

db.collection.find({"comments":{$elemMatch:{creator:"name"}}})

我想删除的只是用户对所有帖子的评论,而不是帖子本身。我觉得我很接近,但找不到一个

查找结果:

{ "_id" : ObjectId("5b84a319ec18e50d9093f3aa"), 
"phoneNumber" : 2334445555, 
"flags" : 1, 
"description" : "Charity", 
"comments" : [ 
{ "_id" : ObjectId("5b84a319ec18e50d9093f3ab"), "content" : "Red cross asked me to donate using Moneygram", "creator" : "jv3123", "created" : ISODate("2018-08-28T01:19:21.368Z") } ], "created" : ISODate("2018-08-28T01:19:21.369Z"), "__v" : 0 }


{ "_id" : ObjectId("5b84a4e2ec18e50d9093f3ac"), 
"phoneNumber" : 2334445555, 
"flags" : 1, 
"description" : "Charity", 
"comments" : [ 
{ "_id" : ObjectId("5b84a4e2ec18e50d9093f3ad"), "content" : "Red cross rep asked me to send money through Moneygram", "creator" : "jv3123", "created" : ISODate("2018-08-28T01:26:58.532Z") } ], "db.phoneNumberData.find({"comments":{$elemMatch:{creator:"jv3123"}}})

{ "_id" : ObjectId("5b84a319ec18e50d9093f3aa"), 
"phoneNumber" : 2334445555, 
"flags" : 1, 
"description" : "Charity", 
"comments" : [ { "_id" : ObjectId("5b84a319ec18e50d9093f3ab"), "content" : "Red cross asked me to donate using Moneygram", "creator" : "jv3123", "created" : ISODate("2018-08-28T01:19:21.368Z") } ], "created" : ISODate("2018-08-28T01:19:21.369Z"), "__v" : 0 }

{ "_id" : ObjectId("5b84a4e2ec18e50d9093f3ac"), 
"phoneNumber" : 2334445555, "flags" : 1, "description" : "Charity", "comments" : [ { "_id" : ObjectId("5b84a4e2ec18e50d9093f3ad"), "content" : "Red cross rep asked me to send money through Moneygram", "creator" : "jv3123", "created" : ISODate("2018-08-28T01:26:58.532Z") } ], "created" : ISODate("2018-08-28T01:26:58.532Z"), "__v" : 0 }

共有1个答案

庄经国
2023-03-14

您可以使用更新操作符$pull删除与特定查询匹配的数组元素。就你而言:

db.collection.updateMany(
    {"comments":{$elemMatch:{creator:"name"}}}, // original query
    {
      $pull: {
        comments: {
          creator: "name"
        }
      }
    })
 类似资料:
  • 假设对象数组如下: 如果标签和颜色相同,则为重复条目。在这种情况下,id=1和id=5的对象是重复的。 如何筛选此阵列并删除重复项? 我知道一些解决方案,在这些解决方案中,您可以使用以下内容对一个键进行过滤: 但是多个键呢? 根据评论中的要求,以下是预期结果:

  • 我试图通过比较对象中的多个字段来从数组中找到重复的对象。 我想将对象的两个字段与同一数组的其他对象进行比较。 我想露营只是名称和 lname,忽略我的对象内的第 3 个字段 如何查找和删除输出如下的重复对象

  • 问题内容: 我使用以下方式列出了重复项: 现在,如何删除除一条消息以外的所有消息(我正在尝试删除重复项,以便可以在上应用唯一索引)。 问题答案: 使用和分配行号,以便删除重复对中除一个以外的所有行。

  • 问题内容: 这个问题已经在这里有了答案 : 如何从MySQL中的多个表中删除? (7个答案) 2年前关闭。 我有4个表,每个表存储有关用户的不同信息。每个表都有一个带有user_id的字段,用于标识哪个行属于哪个用户。如果要删除用户,这是从多个表中删除该用户信息的最佳方法吗?我的目标是在一个查询中做到这一点。 查询: 问题答案: 您可以使用选项在表上定义外键约束。 然后,从父表中删除记录将从子表中

  • 问题内容: 说我有这些二维数组A和B。 如何从B中删除A中的元素。(集合论中的补语:AB) 更准确地说,我想做这样的事情。 问题答案: 基于this solution对,这里是用更少的内存占用与NumPy基础的解决方案,并与大型阵列工作时,可能是有益的- 样品运行- 在大型阵列上的运行时测试- 具有基础解决方案的时间- 基于更少内存占用量的定时解决方案- 进一步提升性能 通过将每一行视为索引元组来

  • **瓷砖可能不正确** 在不手工列出表名的情况下,我是否可以使用一个函数获取表名,然后在delete语句中使用该函数?即 有没有一个好的,明确的方法来做这件事?我不会把桌子丢在这里的。