Mongodb 创建伪字段?

Mongodb create pseudo fields?

您好,我想知道是否可以在 Mondodb 上创建伪属性。这是,目前我有 collections 个这样的用户:

{_id: (_1), name: "user1", secret: "1"}
{_id: (_2), name: "user2", secret: "2"}

当我查询数据库时。我做了类似的事情:

function getuser(objectId) {
  db.users.find({_id : objectId}).toArray(function(err, result) {
    x = result[0];
    x.pseudoField1 = hash(secret); 
    return x;
  });
}

然后我对 x object 和 return 进行一些操作以放入数据库,但在此之前我必须过滤不需要的属性,所以我这样做:

y = {}
y._id = x._id
y.name = x.name
y.secret = x.secret
db.users.update({_id: y._id}, y);

我想知道是否有任何方法可以使数据库自动 return 成为具有 pseudoField1 的 object 以及我想要的功能,此外,当我使用 x 发布更新时,只有字段 _idnamesecret 得到更新。

当您想计算数据库中的字段时,您可以使用带有 $project stage. The aggregation frameworks offers some simple arithmetic operators 的聚合管道来创建从其他字段的值派生的字段,但实现复杂的哈希函数也可能太过分在数据库上做起来很复杂。

您的第二个要求 - 告诉 MongoDB 在插入时忽略特定字段 - 不可能开箱即用。但是你能做的是remove the field from the document before saving it。您还可以使用像 Mongoose 这样的对象文档包装器,它允许您定义模式并排除某些字段将它们存储在数据库中。