我正在尝试将一个新的key:value对添加到mongoDB文档的现有对象中,但是没有任何步骤对我有帮助
我尝试了$ each,$ push $ addtoset,但是我理解它们是用于数组的,然后我尝试了$ det,但是它正在用新的key:value对更新现有的key:value对
这是我的文件
{
test:"abc",
test2:"cdf",
test3:{ 1:"one"}
}
如果您在上述文档中的观察者test3键我已经具有1:“一个”,那么我想在同一对象中添加新键值
喜欢
{
test:"abc",
test2:"cdf",
test3:{ 1:"one", 2:"two", 3:"three"}
}
在mongoDB中可以吗?
这是mongo查询
let val = parseInt(DYNAMICVALUE)
var changfeemaildot = (req.session.email).replace(/\./g, '#')
var seld = {
_id: ObjectId(rx[0]._id)
};
var seldu = {
$set:{
emails: {
[changfeemaildot]: val
}
}
};
var collection =
connection.get().collection('problems');
collection.update(seld, seldu, function (err, rail) {
});
答案 0 :(得分:0)
您可以使用$set。因此您的代码可以是这样的
db.collection.update({<your_condition>}, {$set: {"test3.2": "two", "test3.3": "three"}});
在您的情况下,将是这样
var seldu = {$set: {["emails." + changfeemaildot]: val}}
答案 1 :(得分:0)
您可以将 $set 与 findOneAndUpdate 一起使用。所以你的代码可以是这样的
const { Types, connection } = require("mongoose");
const productList = await connection.collection('products').find({}).toArray()
productList.forEach(async function(myDoc) {
await connection.collection('products').
updateOne({ productId: Types.ObjectId(myDoc.productId) }, {
$set: {
productDisplayId: 'anything you want'
}
});
});