Mongojs 试图推送到数组

Mongojs attempting to push to array

我正在尝试保留我正在处理的所有网站的列表,但我在使用 $push 时遇到了问题。

我用这个创建了一个文档:

accountData = {
    'accountid': account_id, 
    sites: {
        '001': 'example.com',
    }
};

db.accounts.insert(accountData);

效果很好,我得到:

{ accountid: 'AC654164545', 'sites.001': { '$exists': true } }

我想添加到站点对象。这就是我正在尝试的:

db.accounts.update( 

    {'accountid': account_id}, 
    { 
        $push: 
        { 
            sites: 
            { 
                '002': 'example2.com'
            } 
        } 
    }, 
    function(err,doc){
        console.log(err);
    }
);

我得到的错误是:

err: 'The field \'sites\' must be an array but is of type Object in document

我不想用数组创建文档,因为我知道如果我在插入时做了这样的事情:

    sites: {
        '002': 'example2.com',
        '003': 'example3.com',
        '004': 'example4.com',
    }

它会工作得很好。

如何使用 $push 或任何其他命令添加到 "sites" 对象而不是数组?

它不能是数组,因为我正在使用以下搜索现有网站。

search['sites.' + site_id] = { $exists : true };

好的,我知道问题出在哪里了。

我没有在正确的上下文中考虑问题。

说它需要是一个数组是正确的,所以我在创建(初始插入)时将 "sites" 对象更改为这样的数组,所以它是一个数组:

    accountData = {
        'accountid': account_id, 
        sites: [{'001': 'example.com'}]
    };

然后,通过使用上面与 $push 完全相同的代码,它可以正常工作。