javascript - 在数组字段中插入文档

标签 javascript node.js mongodb

我不太会mongodb,所以很难操作子文档。我想要做的是像这样实现地址簿:

{
    [user1@mail.com]: [
        {
            email: 'aaa@example.com',
            createdAt: '0000-00-00',
            updatedAt: '0000-00-00'
        }
    ],
    [user@mail.com]: [
        { ... },
        { ... }
    ]
}

我将该集合称为“地址簿”,每个项目都是数组类型,包含电子邮件、图像、创建日期等地址信息。

问题是我不知道该怎么做。看起来我需要使用一些运算符,如 $addToSet 或 $push,但我不明白如何正确使用它们。我尝试了什么:

update({
    email: 'user1@mail.com'
}, {
    $push: {
        'address.$email': {
            email: target,
            createdAt: new Date(),
            updatedAt: new Date()
        }
    }
})

我知道的一件事是使用 upsert 选项更新集合创建新文档(如果它不存在),但文档仍然没有创建。帮帮我将不胜感激。

最佳答案

看起来所呈现的结构会将所有用户数据保存在一个文档中。这在以后的处理中可能会非常棘手,因为 bson 文档有 16MB 的容量限制。

如果您可以考虑更简单的文档形式:

{
   _id:bsonId,       
   email: 'aaa@example.com',
   createdAt: '0000-00-00',
   updatedAt: '0000-00-00',
   name: "unknown"
 }

然后更新和维护您的收藏会容易得多。

db.addressbook.update({ email: 'aaa@example.com'},{name:"Happy User"})

关于javascript - 在数组字段中插入文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37627792/

相关文章:

javascript - .when 可以用 Angular $routeProvider 动态生成吗?

基于浏览器窗口大小的 Javascript 滚动条

javascript - jquery 醉酒工具提示不适用于 d3.js 圆圈

javascript - d3.scale.ordinal 的问题

node.js - httpS 和 http/2 有什么区别?

mongodb - 如何构建bson.D {}

javascript - AjaxFileUpload 语法错误 : missing } in XML expression

node.js - io.adapter 是如何工作的?

node.js - Jade 中的变量范围

node.js - 如何在 Node 中的 MongoDB 中使用 findOneAndUpdate