MongoDB基本使用
简单查询:查询过程中需要注意字段值的数据类型Boolean、String、DBRef....
1.根据id查询:
db.COLLECTION_NAME.find({_id:ObjectId("5bd80e1867f3337d4c2aac59")})
2.根据字段查询:
db.getCollection("qtfm__audio_info").find({_id:ObjectId("5bd80e1867f3337d4c2aac59"),code:"TT0000066_0001"})
如果表字段的数据关联了其他的表,格式为DBRef的,查询的字段书写需要改变:
db.getCollection("qtfm__audio_info").find({_id:ObjectId("5bd80e1867f3337d4c2aac59"),code:"TT0000066_0001",'album.$id':ObjectId('5bd56581db876943b4d0ec72')})
boolean类型:
db.getCollection("qtfm__audio_info").find({_id:ObjectId("5bd80e1867f3337d4c2aac59"),code:"TT0000066_0001",'album.$id':ObjectId('5bd56581db876943b4d0ec72'),deleted:true})
3.条件操作符查询:
大于($gt):Greater then, 值类型需要为int、double...
db.qtfm__audio_info.find({playLength:{$gt:2}})
小于($lt):Less than,值类型需要为int、double...
db.qtfm__audio_info.find({playLength:{$lt:2}})
大于等于($gte):Greater than equals
db.qtfm__audio_info.find({playLength:{$gte:2}})
不等于($ne):Not equals
db.qtfm__audio_info.find({name:{$ne:'11'}})
小于等于($lte):Less than equals
db.getCollection("qtfm__audio_info").find({playLength:{$lte:22},code:"TT0000066_0001",'album.$id':ObjectId('5bd56581db876943b4d0ec72'),deleted:true})
包含($in):
db.qtfm__audio_info.find({name:{$in:["11",'12','13']}})
不包含($nin):
db.qtfm__audio_info.find({name:{$nin:["11",'12','13']}})
或者($or):同一个字段,需要多个条件查询
db.qtfm__audio_info.find({$or:[{name:'11'},{publishStatus:'Up'}],deleted:false})
和($and):
db.qtfm__audio_info.find( {
$and : [
{ $or : [ { price : 0.99 }, { price : 1.99 } ] },
{ $or : [ { sale : true }, { qty : { $lt : 20 } } ] }
]
} )
存在($exist):可以用来判断某个字段是否存在,一般情况下,可以用来添加字段的时候来判断该字段是否存在
db.qtfm__audio_info.find({name:{$ne:'11',$exists:false}}) //查询字段 name 存在,且值等于11
插入
插入单条数据:
db.qtfm__audio_info.insert(
{
"_id" : ObjectId("5bd9d56832f7443f58b93e41"),
"name" : "audio1",
"album" : {
"$ref" : "qtfm__album_info",
"$id" : ObjectId("5bd3d1c832f7443f58b93e40")
},
"publishStatus" : "Up"
})
批量插入数据:Array类型的数据
db.qtfm__audio_info.insert([
{
"_id" : ObjectId("5bd3d56832f7443f58b93e41"),
"name" : "audio1",
"album" : {
"$ref" : "qtfm__album_info",
"$id" : ObjectId("5bd3d1c832f7443f58b93e40")
},
"publishStatus" : "Up",
},
{
"_id" : ObjectId("5bd85ab9edee1445ac240140"),
"code" : "TT0000001_0001",
"name" : "1",
"album" : {
"$ref" : "qtfm__album_info",
"$id" : ObjectId("5bd3d1c832f7443f58b93e40")
},
"timeCreated" : NumberLong(1540905657271),
"timeModified" : NumberLong(1540905657271),
"deleted" : true,
"_class" : "fm.qingting.common.data.model.AudioInfo",
"publishStatus" : "Up"
},
..........
])
更新
查询表中的字段是否存在,不存在就添加字段
db.qtfm__audio_info.update(
{'deleted_DDD':{$exists:false}},
{$set:{'deleted_DDD':false}},
false,
true
)
分组
条件: album.$id = 5bd3d1c832f7443f58b93e40
分组字段: orderNum ,并且对orderNum 字段进行数量统计
db.qtfm__audio_info.aggregate([
{$match:{'album.$id':{$eq:ObjectId("5bd3d1c832f7443f58b93e40")}}},
{$group:{'_id':'$orderNum',num_totoal:{$sum:1}}}
])
条件: deleted = false
分组字段: orderNum ,并且对orderNum 字段进行数量统计
db.qtfm__audio_info.aggregate([
{$match:{deleted:false}}},
{$group:{'_id':'$orderNum',num_totoal:{$sum:1}}}
])