javascript - 在 mongodb update 语句中访问带空格的字段
问题描述
我在集合中有以下文档字段
{
_id: ObjectId("5f1b6b26ea1c3b378704b7e9"),
"Gene Name":"xyz"
}
我正在尝试添加一个新字段但没有空格。我怎样才能做到这一点 ?因为以下不起作用
db.getCollection('collection').updateMany(
{ },
{ $set: { "geneName": "$'Gene Name'" } }
)
而且这也不起作用
db.getCollection('collection').find({}).forEach( function(doc)
{
db.getCollection('collection').updateOne(
{_id:doc._id },
{ $set: { "geneName": doc.Gene Name } }
);
} );
请注意,我不想重命名现有字段。我只是想访问当前字段以将其添加到新字段。
如果您可以为 forEach 和聚合管道提供解决方案(如果其中任何一个都可以用于此类操作),我会很高兴,因为我也想学习如何使用“$ {field}”表示法访问这些烦人的字段
解决方案
updateOne
在 MongodDB 4.2+ 版本中,您可以在、updateMany
或update
集合方法中使用聚合管道。这是您需要的:
db.collection.update({},
[
{
$set: {
"anotherfield": "$Gene Name"
}
}
])
结果将是:
{
"Gene Name": "xyz",
"_id": ObjectId("5f1b6b26ea1c3b378704b7e9"),
"anotherfield": "xyz"
}
推荐阅读
- azure - 如何使用 Azure VM 的 az 命令对连接进行故障排除
- palantir-foundry - 独立于用户系统时钟检索当前时间的最佳做法是什么?
- scala - 将 S3 位置的文件名保存在数组中
- android - 有什么方法可以让 Android ACTION_OPEN_DOCUMENT_TREE 告诉用户我们为什么需要选择文件夹?
- flutter - 尝试使用 Provider 动态添加到 SLiverList 时,出现错误:在构建期间调用了 setState() 或 markNeedsBuild()
- angular - 使用 RXJS 继续以角度触发 http 调用,直到满足条件
- javascript - 这个表示三重求和的三重 for 循环有什么问题?
- spring - 扩展时 CommonsRequestLoggingFilter 不记录
- swift - 您可以删除 PDFView 后面的支持文档文件吗
- module - 为模块分配签名