使用新的ObjectID和$ currentDate更新数组

时间:2018-06-28 16:45:05

标签: javascript node.js mongodb nosql

我的用户在mongo数据库中有一个数组。在注册时,我要向该用户数组添加一个新用户(对象)。同时,我想为这个新用户创建一个ObjectID并创建一个created_at属性及其创建日期

let NewUserStructure = {
    _id: ObjectID(),
    username: NewUserUsername,
    nome: NewUserName,
    password: password,
    logado: false,
    especialidades: EspecialidadesArray,
    adm: isadmin,
    cuidade: [],
    $currentDate: {criadoem: true},
    criadopor: createdby,
};
// let query = {_id: '5b193acdfb6fc05a6fe42785'};
let query = {Profissionais: {$exists: true}};
let NewValue = {$addToSet: {Profissionais: NewUserStructure}};
nosqlquery.update('usuarios', query, NewValue, function(result) {
    res.status(200).send(result);
});

我为另一个文件上的 update方法创建了通用函数

const update = function(targetcollection, query, NewValues, callback) {
console.log('update was called');
_db.collection(targetcollection).updateOne(query, NewValues, function(err, result) {
    if (err) throw err;
    callback(result);
});

};

NewUserStructure是我使用$addToSet在Profissionais数组中插入的json。我尝试通过多种方法用currentDate创建该唯一的ObjectID和新属性。

错误:$currentDate is not valid for storage.

我觉得用_id创建一个ObjectID()字段不会为用户创建唯一的_id,还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

您不能在$currentDate中使用$addToSet运算符,因此只能使用new Date(),类似于您对ObjectID()的调用所做的操作(很好):

let NewUserStructure = {
    _id: ObjectID(),
    username: NewUserUsername,
    nome: NewUserName,
    password: password,
    logado: false,
    especialidades: EspecialidadesArray,
    adm: isadmin,
    cuidade: [],
    criadoem: new Date(),
    criadopor: createdby,
};