Mongodb查询字段为null和字段缺失
使用field:null
可以查询出字段为null和字段缺失的文档
使用filed:{$type:'null'}
可以查询字段为null类型的文档
使用field:{$exists:false}
可以查询字段不存在的文档
查询数组(array)
使用field:[a1, a2]
查询与内容嗯相匹配的文档
使用field:{$all:[a1, a2]}
匹配的是文档中字段包含数组中内容的文档
使用field:{$elemMatch:{$gt:1, $lt:2}}
匹配的文档中字段的单独的元素符合
$size
可以指定查询的数组的length
和数组相关的操作符
$push
向查询到的数组增加一条内容.
$each
和$push
配合使用, 向数组添加多条内容.例子
db.test.updateOne({id:1}, {$push:{myarray:{$each:[1, 2, 3, 4, 5]}}})
修改collection中id为1的第一条
文档向文档中插入1, 2, 3, 4, 5.
$slice
也是要和$push
配合使用, 截取最后的几位数字例子:
db.test.updateOne(
{id:1},
{$push:{myarray:{
$each:[1, 2, 3, 4, 5, 6, 7, 8, 9],
$slice:-10,
}}
}
)
$sort
也和$push
, 和用, 且需要$each
, 用来安元素排序, 之后一般通过, $slice
截取.
db.test.updateOne(
{id:1},
{$push:{myarray:{
$each:[{num:1, num:2, num:3}],
$slice:-10,
$sort:{num:-1}
}}
}
)
倒叙排列截取左后十个
$addToSet
以集合的方式添加到数组中.
$pop
删除, $pop:{item:1}
, 1 最后一个, -1第一个
$set
, $unset
设置取消设置
mongodb的命名
文档的键: 不能含有\0
(空字符), .
,$
有特殊用法不能使用
集合的命名: 不能是空字符串""
, 不能含有\0
(空字符), 不能以system.
开头,不能包含$
数据库的命名: 不能是空字符串""
, 基本上只能使用ascii中的数字和字母.最多64个字节
mongodb 时间格式
使用new Date()
创建时间3.6, 2.6版本创建的都是标准时间, 比现在的时间少8小时创建时间的, 注意一下.
尽量使用代码存储, 不要使用shell
参考字段DBRef
DBRef装饰的id可以使用fetch获取元内容.仅在shell中使用
find查询显示的个数
用DBQuery.shellBatchSize 指定
pymongo
pythond的数字类型int, 在mongodb中NumberLong最大支持 -263 到 263- 1 超出这个范围的数字不能存入
Decimal128()
类似与decimal可以保存高精度数字
元组的使用与Decimal不相同.多使用字符串就好了.