首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >任务从MongoDb,Mongoose删除数组中的所有毛绒对象

任务从MongoDb,Mongoose删除数组中的所有毛绒对象
EN

Stack Overflow用户
提问于 2021-02-25 16:57:23
回答 1查看 25关注 0票数 0

我在文档中的一个属性是一个数组,里面填充了漂亮的毛绒对象。现在我想要擦除所有具有特定范围-> qdate:20210225的对象。

db属性称为weeks,如下所示:

代码语言:javascript
运行
复制
[
    {
        "time": [
            "06",
            "00"
        ],
        "active": false,
        "reason": "",
        "bookTime": "202102250600",
        "qdate": 20210225,
        "booked": false
    },
    {
        "time": [
            "06",
            "15"
        ],
        "active": false,
        "reason": "",
        "bookTime": "202102250615",
        "qdate": 20210225,
        "booked": false
    },
    {
        "time": [
            "06",
            "30"
        ],
        "active": false,
        "reason": "",
        "bookTime": "202102250630",
        "qdate": 20210225,
        "booked": false
    },
    {
        "time": [
            "06",
            "45"
        ],
        "active": false,
        "reason": "",
        "bookTime": "202102250645",
        "qdate": 20210225,
        "booked": false
    },
    {
        "time": [
            "07",
            "00"
        ],
        "active": false,
        "reason": "",
        "bookTime": "202102250700",
        "qdate": 20210225,
        "booked": false
    },
    {
        "time": [
            "07",
            "15"
        ],
        "active": false,
        "reason": "",
        "bookTime": "202102250715",
        "qdate": 20210225,
        "booked": false
    },
    {
        "time": [
            "08",
            "00"
        ],
        "active": true,
        "reason": "",
        "bookTime": "202102250800",
        "qdate": 20210225,
        "booked": false
    },
    {
        "time": [
            "08",
            "15"
        ],
        "active": true,
        "reason": "",
        "bookTime": "202102250815",
        "qdate": 20210225,
        "booked": false
    },
    {
        "time": [
            "08",
            "30"
        ],
        "active": true,
        "reason": "",
        "bookTime": "202102250830",
        "qdate": 20210225,
        "booked": false
    },
    {
        "time": [
            "08",
            "45"
        ],
        "active": true,
        "reason": "",
        "bookTime": "202102250845",
        "qdate": 20210225,
        "booked": false
    },
    {
        "time": [
            "09",
            "00"
        ],
        "active": true,
        "reason": "",
        "bookTime": "202102260900",
        "qdate": 20210226,
        "booked": false
    },
]

我可以删除其中一个毛绒绒的对象,但是其他的不能删除。我尝试了不同的组合来做类似的事情。

代码语言:javascript
运行
复制
const company = await Company.updateMany(
    { email: 'test@gmail.com' },
    { $pullAll: [{ 'weeks.qdate': 20210225 }] },
    (err, data) => {
      if (err) console.log(err);
    }
  );

 const company = await Company.updateMany(
    { email: 'test@gmail.com' },
    { $pullAll: [{ 'weeks': { $elemMatch: { qdate: 20210225 } } }] },
    (err, data) => {
      if (err) console.log(err);
    }
  );

我意识到从一个查询中我只能拉出一个匹配项,所以我只能找到一个值为qdate:20210225的对象,为了得到我写的所有内容,我写了一个聚合管道,但在那里我不能完全删除对象,我只能替换这些值。

有没有好心人来帮我?

EN

Stack Overflow用户

回答已采纳

发布于 2021-02-25 17:16:09

看起来像$pull将解决您的问题:

$pull运算符从现有数组中删除全部与指定条件匹配的一个或多个值的实例。

下面的代码可能会有所帮助:

代码语言:javascript
运行
复制
const company = await Company.updateMany(
  { email: 'test@gmail.com' },
  { $pull: { weeks: { qdate: 20210225 } } },
  ...
);
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66365283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档