10.MongoDB数组查询和嵌套字段查询

10.MongoDB数组查询和嵌套字段查询


10.1 知识点

查询数组中的元素

插入带数组的文档

# 插入一个新的数据,并且增加一个 lessons 数组字段
db.users.insertOne({ 
  name: "T1", 
  age: 25, 
  lessons: [1, 3, 5, 7, 9] 
});

db.users.insertOne({ 
  name: "T2", 
  age: 25, 
  lessons: [2, 4, 6, 8, 10] 
});


查询数组中包含指定值的文档

# 查询 lessons 数组中包含 1 或 4 的文档
# 这里查询的是类似“或”的操作,不是“与”的操作
db.users.find({ 
  lessons: { $in: [1, 4] } 
});

查询数组中不包含指定值的文档

# 查询没有 lessons 字段,或者 lessons 数组中不包含 11 或 4 的文档
db.users.find({ 
  lessons: { $nin: [11, 4] } 
});

查询数组中符合条件的元素

# 查询 lessons 数组中存在大于 2 的元素的文档
db.users.find({ 
  lessons: { $elemMatch: { $gt: 2 } } 
});

查询嵌套字段

插入带嵌套字段的文档

# 插入两条带 bag 对象的数据
db.users.insertOne({ 
  name: "TT1", 
  age: 11, 
  bag: { 
    index: 1 
  } 
});

db.users.insertOne({ 
  name: "TT2", 
  age: 22, 
  bag: { 
    index: 2 
  } 
});





查询嵌套字段的确切值

# 查询 bag.index 等于 1 的文档
db.users.find({ "bag.index": 1 });

查询嵌套字段的范围

# 查询 bag.index 大于 0 的文档
db.users.find({ "bag.index": { $gt: 0 } });



转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏