mongodb实用技巧总结

后端使用mongodb作为数据库,有时候会面对各种需求,google 太费时间,所以将自己使用过的一些技巧总结出来。

批量更新文档中数组对象里面的某个字段

  • 文档示例

    1
    2
    3
    4
    5
    6
    7
    8
    {
    _id: ObjectId('5f68710c4da61820f461e0b8')
    name: 'zhangsan',
    freinds:[
    {name:'lisi',age:18},
    {name:'xiaowang',age:20},
    ]
    }
  • 目标

    文档如上,假如现在我们需要更新 freinds 中小王(xiaowang)的年龄,但是同时,我们也不知道小王这个元素位于数组的下标索引。

  • 查询

    1
    2
    3
    4
    5
    6
    7
    8
    const person = await collection.findById('5f68710c4da61820f461e0b8');
    const index = person.freinds.findIndex(f=>f.name==='xiaowang');
    const freind = person.freinds[index];
    freind.age = 22; // 修改年龄
    // 如果是修改 freind 中原有的字段,这句可以不要
    // 如果是新增字段,这句就必须加上,否则 save 会失效
    person.freinds.splice(index,1,freind);
    person.save();

疑问解答