mangodb对于数据类型为Array的相关增删改查操作

1、在admin库的user集合数据有这些

  

[{
  "_id": {
    "$oid": "62ce682c4c0cf44909d430bf"
  },
  "_address": "成都华阳",
  "_phone": "4578425656",
  "_sex": "男",
  "_roles": [
    {
      "roleName": "1"
    },
    {
      "roleName": "2"
    }
  ],
  "_name": "xiaoming",
  "_age": 29,
  "_registerTime": {
    "$date": {
      "$numberLong": "1643587200000"
    }
  },
  "_confidant": [
    "傅恒",
    "胤禛",
    "潘安",
    "周小史"
  ]
},{
  "_id": {
    "$oid": "62ce68484c0cf44909d430c1"
  },
  "_name": "zhengyixn",
  "_age": 28,
  "_hobby": "play games",
  "_job": "JAVA",
  "_resgisterTime": {
    "$date": {
      "$numberLong": "1646323200000"
    }
  }
},{
  "_id": {
    "$oid": "62ce6ba24c0cf44909d430c5"
  },
  "_addres": "成都中和",
  "_age": 22,
  "_name": "xiaohong",
  "_phone": "3729479347"
},{
  "_id": {
    "$oid": "62ce73432293b30b2a19df9e"
  },
  "_name": "xiaoli",
  "_age": 21,
  "_roles": [
    {
      "roleName": "1"
    },
    {
      "roleName": "2"
    }
  ]
}]
View Code

 

2、向 _name等于xiaoming的记录中的_confidant Array新增一条元素

db.user.update({"_name":"xiaoming"},{$push:{"_confidant":"周小史"}});

 

3、向 _name等于xiaoming的记录中的_confidant Array新增一条元素,就是把push换成pull

db.user.update({"_name":"xiaoming"},{$pull:{"_confidant":"周小史"}});

4、查出_confiant 包含"傅恒"或"潘安“的数据,(模糊查询)

 db.user.find({"_confidant":"潘安"},{"_confidant":"傅恒"})

结果:

5、查找_confiant 数组值为["傅恒","潘安"] 的数据 (精确查询)

 db.user.find({"_confidant":["傅恒","潘安"]}); 

结果:

6、向_roles数组新增一个Object元素

db.user.update({"_name":"xiaoming"},{$push:{"_roles":{"roleName":"3"}}});

删除_roles数组元素将$push换成$pull就行了

 

7、修改_name等于小明的_roles.roleName等于1的数组元素

db.user.update({"_name":"xiaoming","_roles.roleName":"1"},{$set:{"_roles.$.roleName":"11"}});

结果:

 

 

 

8、查找_roles.roleName包含1的数据

db.user.find({"_roles.roleName":"1"});

结果:

 9、类似sql的in查询写法,还有$nin(not in)

db.user.find({"_roles.roleName":{$in:["1","2"]}});

db.user.find({"_name":{$in:["xiaoming","xiaohong"]}});

 

posted @ 2022-07-13 17:34  smellycats  阅读(96)  评论(0)    收藏  举报