Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组字段中插入文档_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 在数组字段中插入文档

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]: [ { ... }, {

我不擅长mongodb,所以很难操纵子文档。我想做的是实现如下地址簿:

{
    [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文档而不是伪文档。哦。。。我忘了限制每个文件的长度。我应该试试。谢谢:)