use test_database
show collections
db.table_name.renameCollection("new_name")
db.createColletion("table_name")
db.createCollection("Test",{capped:true, size:10000}) { "ok" : 1 }
capped:true,表示该集合的结构不能被修改;
db.table.findOne() return dict
db.table.find() return cursor
size:在建表之初就指定一定的空间大小,接下来的插入操作会不断地按顺序APPEND数据在这个预分配好空间的文件中,如果已经超出空间大小,则回到文件头覆盖原来的数据继续插入。这种结构保证了插入和查询的高效性,它不允许删除单个记录,更新的也有限制:不能超过原有记录的大小。这种表效率很高,它适用于一些暂时保存数据的场合,比如网站中登录用户的session信息,又比如一些程序的监控日志,都是属于过了一定的时间就可以被覆盖的数据。
数据表帮助主题help
db.Account.help()
db.Account.find().help()
DBQuery.shellBatchSize = 20(default)
- Start server: mongod –dbpath C:mongodbdatadb3
- Start client: mongo
Advanced command: mongo –host 127.0.0.1 –port 27017
- Client command: (the green part is mutable)
List all databases: show databases
Change database: use test_database
List all table: show collections
Count: db.table_name.find().count()
Drop table: db.table_name.drop()
Create index: db.table_name.createIndex({“class_name”:1, “method_name”:1})
db.table_name.ensureIndex({“class_name”:1, “method_name”:1})
drop indexes: db.table_name.dropIndexes()
update: db.table_name.update(condition, data)
condition like: {“_id”:ObjectId(“xxxx”)}, data like: {“$set”:{“access_flag”:xxx}}, 如果不用$set, 则会覆盖整条数据而不是更新。
批量更改,某一列等于另一列的值:
db.getCollection('TestCase').find({"csv.total_lines":{"$exists":"true"}}).forEach(
function(item){
db.getCollection('TestCase').update({"_id":item._id},{"$set":{"expect":item.csv.total_lines}},multi=true)
}
)
remove: db.table_name.remove(condition)
Query:
db.table_name.find({“class_name”:xxx, “method_name”:xxx})
db.table_name.find({age:{$lt:30}}).hint({name:1, age:1}).explain() ---红色部分强制使用索引
指定显示name, age两列:db.table_name.find({}, {name:1, age:1})
嵌套:{name:'Tom', contact: {email:"xx@126.com", phone:88837776}}
db.table_name.find({'contact.email':{$regex:'126.com'}}, {'name':1, 'contact.email':1})
db.table_name.find({'name':'Tom', {$or:[{a:1}, {b:2}]}})
db.table_name.find({'name':{$exists:true}})
如果表内数据很多,查询会因timeout而失败,这时候要将timeout参数设为flase:
db.table_name.find(timeout=False)
field是数组的查询:
db.table.find({field1: {$in:['aa', 'bbb]}}) 把field1 为aa 和bb的纪录都查找出来
db.table.find({field1: {$all:['aa', 'bbb']}}) 查询field1数组中同时存在 aa, bb的纪录
获取表头(pymongo):
list(sorted(self.db['table'].find_one().__iter__()))
- stop server or client: ctrl + c