我有一个包含人员及其信息(姓名,性别等)的数据库。例子:
{
"id": 31,
"balance": "$1,137.95",
"age": 24,
"eyeColor": "blue",
"name": "Burris Newton",
"gender": "male",
"company": "XOGGLE",
"email": "burrisnewton@xoggle.com",
}
我想替换"male"通过"H"one_answers";female"通过"F"使用$cond
在我的数据库中的性别我已经写了这个,但是它不工作
db.contacts.aggregate([
{
$project: {
_id: 0,
age: 1,
name: 1,
gender: {
$cond: {
if: {
"gender": {$eq: ["$gender", "male"]},
then: "H",
else: "F"
}
}
}
}
}
])
你想要使用管道更新,这在Mongo 4.2+版本中可用,如果你使用的是较小的版本,你将不得不在代码中通过逐个迭代每个文档来实现这一点。
下面是使用该特性的代码示例:db.collection.updateMany(
{},
[
{
"$set": {
"gender": {
$cond: [
{
$eq: [
"$gender",
"male"
]
},
"H",
"F"
]
}
}
}
])
Mongo操场
*注意,如果文档可能缺少性别字段,那么您必须解决这个问题,否则它们将获得"F"
值。