在数组字段中插入文档

时间:2016-06-04 07:49:45

标签: 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选项更新集合会生成新文档(如果它不存在),但仍然没有创建文档。非常感谢一手牌。

1 个答案:

答案 0 :(得分:1)

看起来所呈现的结构将把所有用户数据保存在一个文档中。这在未来的处理中可能非常棘手,因为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"})