首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mongodb中更新对象中的数组

如何在mongodb中更新对象中的数组
EN

Stack Overflow用户
提问于 2022-06-03 16:31:31
回答 2查看 29关注 0票数 1

我试图更新对象内部的数组,但我没有找到正确的方法。我的文件是这样的:

{ "_id“:ObjectId("62792b4a0c9c5a00b6a8e17b"),”用户名“:"user_1",”单词“:[{”单词“:"RATIONAL",”子词“:”老鼠“,"TAN”},{“单词”:“年轻”,“子词”:“您”,“您的”}

我想推到一个特定单词的子词数组,例如,我想将"AT“推到"RATIONAL”的子词中,谢谢帮助:)

EN

回答 2

Stack Overflow用户

发布于 2022-06-03 17:19:55

您可以使用filter() javascript函数获取"RATIONNAL“,然后将所需的值推入子字数组中。

例如,假设只有一个单词RATIONNAL,并且它存在。如果不是这种情况,则需要改进此代码以处理所有情况。

代码语言:javascript
复制
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);

运行此操作将将其打印到控制台:

代码语言:javascript
复制
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
  ]
}
票数 0
EN

Stack Overflow用户

发布于 2022-06-03 20:24:33

您可以使用arrayFilters更新选项,如下所示:

代码语言:javascript
复制
db.collection.update({},
{
  $push: {
    "words.$[x].subwords": "AT"
 }
},
{
 arrayFilters: [
 {
  "x.word": "RATIONAL"
 }
]
})

解释:

定义arrayFilter x以匹配要将AT值推送到子字数组的单词条目

游乐场

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72492604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档