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

从mongoose中的等效mongodb数组中删除项

裘禄
2023-03-14

文件:

{
    "_id" : ObjectId("5399ba7f8035beb2d4717cc0"),
    "listName" : "firstList",
    "items" : [
        {
            "pName" : "iPad ",
            "pDesc" : "iPad aiiir",
            "ownerID" : ObjectId("5399b596c501732dd4d13923"),
            "_id" : ObjectId("5399e2cc2d7b0349d89d2b44"),
            "dateAdded" : ISODate("2014-06-12T17:26:36.282Z")
        },
        {
            "pName" : "iPhone ",
            "pDesc" : "5s",
            "ownerID" : ObjectId("5399b596c501732dd4d13923"),
            "_id" : ObjectId("5399e2cc2d7b0349d89d2b44"),
            "dateAdded" : ISODate("2014-06-12T17:26:36.282Z")
        }
]}

我想从“数组”项中删除一个项,而不知道文档的_id,只知道元素的id,我有一个查找元素的查询,它在mongodb shell中工作,但在mongoose中不工作,

db.lists.find( {items:
               {$elemMatch:{'_id':ObjectId("5399b596c501732dd4d13923")}}} , 
               {"items.$":1});

你知道为什么吗?

你能给我同等的猫鼬吗?

我应该如何从列表中提取该项,而只知道它的_id?

共有2个答案

孔波
2023-03-14

多亏了Yves Amsellem,我找到了解决我问题的猫鼬方案。他的答案是猫鼬式的:

    Lists.update(
                 {}, 
                 {$pull: {items: {_id: iProductId}}},  
                 { multi: true },
                 function(err, data){
                      console.log(err, data);
                 }
    );
景育
2023-03-14

这应该可以做到:

db.lists.update(
    {}, 
    { $pull: {"items": {"_id" :ObjectId("5399e2cc2d7b0349d89d2b44") }},
    { multi: true }})

对于集合中的每个文档({}表示空查询),它删除具有提供的_id(在数组中)的每个项。如果没有选项,只有找到的第一个文档会受到影响

 类似资料:
  • 我是mongoDB新手,在使用Mongoose从mongoDB中的数组中删除团队对象时遇到困难。我的用户收藏看起来像; 我的移除路线看起来像; 控制台在用户之前和之后记录日志。更新是完全相同的,我没有得到任何错误抛出。控制台的输出。日志(错误、数据)最终被删除 我不知道该怎么解释。我也尝试过不按这里的建议传入userID;https://stackoverflow.com/a/24289161/5

  • 问题内容: 文件: 有没有办法从数组中提取特定对象?IE如何从项数组中提取ID为23的整个项对象。 我努力了: 但是我很确定我没有正确使用’pull’。据我了解,pull将从数组中拉出字段,而不是对象。 关于如何将整个对象从数组中拉出的任何想法。 另外,我尝试在mongoose / nodejs中执行此操作,也不确定这种类型的内容是否在mongoose API中,但我找不到它。 问题答案: 尝试.

  • 在mongodb中,我有一个集合,其中数组有重复的条目,如 我需要删除重复的数组,只保留唯一的数组值,如下所示。 最好的方法是什么 谢啦

  • 问题内容: 我正在使用Mongoose库通过node.js访问MongoDB 有没有办法 从文档中删除密钥 ?即不只是将值设置为null,而是将其删除? 问题答案: 在早期版本中,您需要删除node-mongodb-native驱动程序。每个模型都有一个收集对象,该对象包含node-mongodb- native提供的所有方法。因此,您可以执行以下操作: 从2.0版开始,您可以执行以下操作: 从2

  • 我想用相当复杂的方案更新文档。 我想用原子更新来做(而不是在内存中修改它,然后调用.save())。 }); ////////////////////////////////////////////////////////////// 我有事件id(_id)、会话(id)和需要添加/删除项到投票人数组。

  • 我有一个叫酒吧的收藏。每个文档都包含一个名为cocktails的字符串数组,以便: 使用Spring mongodb,我将删除每个“sexontheBeach”,以便: 泰提前。