node.js - 尝试使用聚合管道执行 addField 并且它不起作用
问题描述
我正在使用猫鼬向集合(每个数据)添加一个字段。它返回零错误,但是,当我检查数据库时,它没有添加任何字段。
app.use('/', (res, req) => {
mongoose.connection.db.collection('placemodels').aggregate(
[
{
$addFields: {
type: 'place',
},
},
],
(err, e) => {
console.log(err, 'ahsidufhieuahiu');
console.log(e);
}
);
});
我在哪里犯了错误?
编辑
mongoose.connection.db.collection('placemodels').aggregate(
[
{
$set: {
type: 'place',
},
},
],
(err, e) => {
console.log(err, 'ahsidufhieuahiu');
console.log(e);
}
);
解决方案
$addFields
管道阶段只会将新字段添加到获取的文档中,即它永远不会实际修改数据库中的文档。
换句话说 - 它只是修改输出中的文档。
如果您想实际向数据库中的文档添加新字段,您可以使用collection.update(..)
-operator $set
:https ://docs.mongodb.com/manual/reference/operator/update/set/
推荐阅读
- javascript - JS 搜索框提交未发送值 - 返回未定义或 [Object,Object]
- asp.net - 网络服务托管
- python - ValueError:在数据框中创建多个列时,要解压的值太多(预期为 4)
- firebase - 在 Firebase Functions 流程链中捕获更高层抛出的错误
- html - 悬停时的相对背景颜色
- powershell - 如果 URI 包含 URL 编码值,则使用 Powershell Invoke-RestMethod 的 Team City 构建步骤将失败
- visual-studio-code - 如何在 VS Code 中隐藏一个未知菜单?
- android - 如何在 AAR 中引用 SO 文件?
- php - 如何使用 Laravel 工厂上的其他状态创建“别名”数据库状态?
- ios - 是否有可能专注于选定的 SCNNode