javascript - 如何从 MongoDB 中的数组中提取对象

标签 javascript mongodb mongoose

当接受或取消时,我有拉 friend 请求。因此,当我尝试从数组中提取它时,它不起作用。

它匹配 1 文档但修改了 0 文档。

当我从用户字段中删除 requested_at 字段时,它运行良好。

我哪里出错了?

MongoDB 文档

{
    "_id" : ObjectId("5cb18680aa024b2d441f93cc"),
    "friends" : [],
    "friend_requests" : [ 
        {
            "user" : {
                "id" : ObjectId("5cb14fd7db537905c89e0a72"),
                "requested_at" : ISODate("2019-04-14T17:51:00.588Z")
            }
        }
    ]
}

MongoDB 查询

db.getCollection('users').updateOne(
    { _id: ObjectId("5cb18680aa024b2d441f93cc") },
    {
        $pull: {
            friend_requests: {
                user: {
                    id: ObjectId("5cb14fd7db537905c89e0a72")
                }
            }
        }
    });

结果

{
    "acknowledged" : true,
    "matchedCount" : 1.0,
    "modifiedCount" : 0.0
}

最佳答案

使用点符号来指定条件:

db.users.updateOne(
    { _id: ObjectId("5cb18680aa024b2d441f93cc") },
    {
        $pull: {
            "friend_requests": {
                "user.id": ObjectId("5cb14fd7db537905c89e0a72")
            }
        }
    });

关于javascript - 如何从 MongoDB 中的数组中提取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55678528/

相关文章:

mysql - 存储和分析日志数据库选择

mongodb - 有没有办法将 Google 表格与 SQL 或 NoSQL 数据库同步?

node.js - 无法通过 Mongoose 保存的 Express 访问 POST 调用中的数据

javascript - 具有单个绘制调用的多个纹理

javascript - 自动刷新输入时间对象,无需重新加载页面

node.js - 如何将变量传递给routes.index

javascript - Mongoose,Socket.IO - 如果结果为空,则无法打印空字符串

javascript - 为什么我的 Mongoose 文档没有在 bcrypt 函数内正确更新?

javascript - 突出显示 slider 中的中间 div

javascript - 获取窗口高度