Javascript 在数组字段中插入文档
我不擅长mongodb,所以很难操纵子文档。我想做的是实现如下地址簿:Javascript 在数组字段中插入文档,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我不擅长mongodb,所以很难操纵子文档。我想做的是实现如下地址簿: { [user1@mail.com]: [ { email: 'aaa@example.com', createdAt: '0000-00-00', updatedAt: '0000-00-00' } ], [user@mail.com]: [ { ... }, {
{
[user1@mail.com]: [
{
email: 'aaa@example.com',
createdAt: '0000-00-00',
updatedAt: '0000-00-00'
}
],
[user@mail.com]: [
{ ... },
{ ... }
]
}
我将该集合称为“addressbook”,每个项都是数组类型,包含电子邮件、图像、创建日期等地址信息
问题是我不知道怎么做。看起来我需要使用一些操作符,比如$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"})
所以你想把数据推送到mongoDB中,对吧?你可能会遇到一些麻烦,像这样把文档嵌套得如此之深。Mongo在更新深度嵌套文档时遇到问题。您的做法是正确的,您可以使用
$push
或$pull
向现有文档添加或删除内容。哦,谢谢。我忘了告诉你这是mongodb。请出示有效的BSON文档而不是伪文档。哦。。。我忘了限制每个文件的长度。我应该试试。谢谢:)