1 insert 、create、save区别
-
insert: 主键不存在则正常插入;主键已存在,抛出
DuplicateKeyException
异常 -
save: 主键不存在则正常插入;主键已存在则更新
-
insertMany:批量插入,等同于批量执行 insert
-
create:批量保存,等同于循环执行 save
2 链式操作与options配置等效
collection.find({ runtime: { $lt: 15 } }, { sort: { title: 1 }, projection: { _id: 0, title: 1, imdb: 1 }});
collection.find({ runtime: { $lt: 15 } }).sort({ title: 1}).project({ _id: 0, title: 1, imdb: 1 });
3 计数
-
collection.estimatedDocumentCount( )
:根据集合元数据返回集合中文档数量的估值(速度更快) -
collection.countDocuments( )
:返回集合中与指定查询匹配的文档数(准确值)
4 检索字段的不同值
-
distinct( )
:生成一个列表,该列表包含指定文档字段中的每个不同值 -
检索的文档字段包含数组时,则该方法会将每个元素视为一个单独的值
const distinctValues = collection.distinct(fieldname, query);
5 查询空缺字段
-
{item:null}
查询将匹配包含其值为null的item字段或不包含item字段的文档const cursor = db.collection(‘inventory’).find({ item: null });
-
类型检查
-
{{item:{$ type:10}}
查询仅与包含item字段值为null的文档匹配; 即item字段的值为BSON类型为Null(类型编号为10) -
常见 BSON TYpe
-
-
存在检查
- {item:{$ exists:false}}查询与不包含item字段的文档匹配