我试图更新对象内部的数组,但我没有找到正确的方法。我的文件是这样的:
{ "_id“:ObjectId("62792b4a0c9c5a00b6a8e17b"),”用户名“:"user_1",”单词“:[{”单词“:"RATIONAL",”子词“:”老鼠“,"TAN”},{“单词”:“年轻”,“子词”:“您”,“您的”}
我想推到一个特定单词的子词数组,例如,我想将"AT“推到"RATIONAL”的子词中,谢谢帮助:)
发布于 2022-06-03 17:19:55
您可以使用filter() javascript函数获取"RATIONNAL“,然后将所需的值推入子字数组中。
例如,假设只有一个单词RATIONNAL,并且它存在。如果不是这种情况,则需要改进此代码以处理所有情况。
let myObject = JSON.parse('{ "_id" : "62792b4a0c9c5a00b6a8e17b", "username" : "user_1", "words" : [ { "word" : "RATIONAL", "subwords" : [ "RAT", "TAN" ] }, { "word" : "YOUNGER", "subwords" : [ "YOU", "YOUR" ] } ] }');
console.log('Before: %o', myObject);
myObject.words.filter(word => word.word == 'RATIONAL')[0].subwords.push('AT');
console.log('After: %o', myObject);运行此操作将将其打印到控制台:
Before: {
_id: '62792b4a0c9c5a00b6a8e17b',
username: 'user_1',
words: [
{ word: 'RATIONAL', subwords: [ 'RAT', 'TAN', [length]: 2 ] },
{ word: 'YOUNGER', subwords: [ 'YOU', 'YOUR', [length]: 2 ] },
[length]: 2
]
}
After: {
_id: '62792b4a0c9c5a00b6a8e17b',
username: 'user_1',
words: [
{ word: 'RATIONAL', subwords: [ 'RAT', 'TAN', 'AT', [length]: 3 ] },
{ word: 'YOUNGER', subwords: [ 'YOU', 'YOUR', [length]: 2 ] },
[length]: 2
]
}发布于 2022-06-03 20:24:33
您可以使用arrayFilters更新选项,如下所示:
db.collection.update({},
{
$push: {
"words.$[x].subwords": "AT"
}
},
{
arrayFilters: [
{
"x.word": "RATIONAL"
}
]
})解释:
定义arrayFilter x以匹配要将AT值推送到子字数组的单词条目
https://stackoverflow.com/questions/72492604
复制相似问题