目录
1.查询
db.collection.find({查询条件},{返回信息})
1)查询条件
db.collection.find({"筛选字段":筛选值})
db.collection.find({ "pmid":{$gt:0},{"": } })
$操作符
$ne 不等于
$gt 大于
db.abc_literature.find({
"year": { "$exists": true },
"$expr": { "$gt": [ { "$strLenCP": "$year" }, 4] }
})
长度<4
db.abc_literature.find({
"year": { "$exists": true },
"$expr": { "$lt": [ { "$strLenCP": "$year" }, 4] }
})
包含
数组长度:
db.abc_literature_relation.find({'$where':'this.institution_info.length>1'}).count();
2)返回信息
{"返回字段":1,"不返回字段":0}
db.colleciton.find({},{"_id":0,"pmid":1})
数组类型查询:
数组存在但是为0:
db.abc_literature_relation.find({"strain_info":{$elemMatch:{$ne:null}}}).count();
db.abc_literature_relation.find({"strain_info":{$size: 0}});
3)聚类查询$group
切分:$unwind
eg: author为Array类型
db.abc_literature.aggregate([
{ $unwind:"$author" },
{ $group: { _id:"$author.Affiliation", count: { $sum : 1} }},
{ $sort:{count:-1}}
]);
4)带条件的聚类查询:
db.abc_literature.aggregate([
{ $match: {"journal.issn": {"$ne":""} }},
{ $group: { _id:"$journal.journaltitle", count: { $sum : 1 } } },
{ $sort:{count:-1}}
]);
5)聚类时,超出内存:
//处理author和athors一致后:超出内存
db.abc_literature_relation.aggregate(
[ { $unwind:"$scholar_info"},
{ $unwind:"$scholar_info.affiliation"},
{ $group: { _id:"$scholar_info.affiliation", count: { $sum : 1 } } },
{ $sort:{count:-1}}],
{ allowDiskUse: true });
由于MongoDB区分大小写,聚类不区分大小写时:
db.abc_dict_strain.aggregate([
{ $group: { _id:{ $toLower:"$strain_number" }, count: { $sum : 1 } } },
{ $sort:{count:-1}}
],
{ allowDiskUse: true });
6)模糊查询、不区分大小写、正则查询
//查询包含字符串:
//正则表达http://edu.jb51.net/mongodb/mongodb-regular-expression.html
>db.posts.find({post_text:{$regex:"edu.jb51.net"}})
或者/匹配字符串/
>db.posts.find({post_text:/edu.jb51.net/})
不区分大小写
db.posts.find({post_text:{$regex:"edu.jb51.net",$options:"$i"}})
2.插入
db.abc_literature.insert({"pmid":123,"title":"test",...},options)
db.abc_literature.insertMany([{"pmid":123,"title":"test",...},{}],options)
//插入菌株
db.abc_dict_strain.insertOne({
"strain_number":'ATCC 22752',
"strain_name":'Absidia glauca',
"taxid":4829,
"wdcm_number":496});
联合其他表插入
3.修改update
批量修改updateMany
updateMany({修改对象的筛选条件:条件值},{$set:{修改属性:修改值}})
//multi是否更新多条,(upsert是直接插入)
//db.abc_literature_test.update({"pmid":''},{$set:{"pmid":NumberInt(0)}},{multi: true});
更新数组字段 指定的信息
使用 .$. 表示筛选条件查找的具体的对象
relation_coll.update_one({"_id":rl["_id"],"institution_info.inst_id":wrong_id},{"$set":{"institution_info.$.inst_id":corrct_id}})