mongodb - 使用数组作为子对象在 mongodb 中创建新条目
问题描述
我的猫鼬模式看起来像这样
{
name: String,
posts: [
{
title: String,
description: String,
tags: [String]
}
]
}
我需要将一个条目推送到一个现有条目,即
item = {
title: 'Abc',
description: 'abcabcabcabc',
tags: [
'aa', 'bb', 'cc'
]
}
那么该怎么做呢?我试过了
User.updateOne({ _id: id }, { $push: { posts: item } });
。
如果posts.tags 不是对象数组而只是一个值,那么该命令有效。但是,当必须传递相同的数组时,就会出现问题。
编辑:使用指定值创建对象,但tags
数组为空
解决方案
您不能直接推送所有值数组。使用 $each 将值数组推送到帖子数组,如下所示,
db.collection.update({
"_id": ObjectId("5a934e000102030405000000")
},
{
$push: {
posts: {
$each: [
{
title: "Abc",
description: "abcabcabcabc",
tags: [
"aa",
"bb",
"cc"
]
},
{
title: "Abc",
description: "abcabcabcabc",
tags: [
"aa",
"bb",
"cc"
]
}
]
}
}
})
推荐阅读
- c++ - 具有指数表示的无符号和/或长字面量
- windows - Windows 窗体调用图形 api,服务器错误:在 AAD 中按用户 ID 查找用户失败
- javascript - 在 Symfony 下将数据库值传递给 JavaScript?
- discord - Discord.js,message.guild.owner 返回 null
- php - [Laravel]昨天post的create-function可以工作,但现在不行
- java - 在 Java 中对具有一些要求的字符串数组进行排序
- python - AssertionError: will build wheel with unsupported tag ('cp310', 'cp310', 'linux_x86_64')
- javascript - 开始嵌入 Dailymotion 视频时暂停滑块
- php - 如何在 PHP 中将小浮点数与未知的小数位数相乘而不会因为科学记数法而变为零?
- java - Java 正则表达式匹配模式组意外匹配