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" } ] }]
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"]}});

浙公网安备 33010602011771号