Home | 簡體中文 | 繁體中文 | 雜文 | 打賞(Donations) | 雲棲社區 | OSChina 博客 | Facebook | Linkedin | 知乎專欄 | Github | Search | About

33.3. MongoDB Shell

33.3.1. show 查看命令

33.3.1.1. show dbs

show dbs show database names

			
> show dbs
local	(empty)
logging	0.203125GB
test	0.203125GB
			
			

33.3.1.2. show collections

show collections show collections in current database

			

> show collections
bios
system.indexes
			
			

另一種用法是show tables

			
> show tables
bios
system.indexes
			
			

33.3.1.3. show users

show users show users in current database

			

			
			

33.3.1.4. show profile

show profile show most recent system.profile entries with time >= 1ms

			
> show profile
db.system.profile is empty
Use db.setProfilingLevel(2) will enable profiling
Use db.system.profile.find() to show raw profile entries
			
			

33.3.2. 切換資料庫

		
use <db name>                set curent database to <db name>

> use logging
switched to db logging
		
		

33.3.3. save

存儲嵌套的對象

		
db.foo.save({'name':'neo','address':{'city':'shenzhen','post':518000},'phone':[13113668890,13322993040]})
		
		

存儲數組對象

		
db.foo.save({'Uid':'netkiller@msn.com','phone':['13322993040','13113668890']})
		
		

33.3.4. insert

		
db.bios.insert(
   {
     _id: 1,
     name: { first: 'John', last: 'Backus' },
     birth: new Date('Dec 03, 1924'),
     death: new Date('Mar 17, 2007'),
     contribs: [ 'Fortran', 'ALGOL', 'Backus-Naur Form', 'FP' ],
     awards: [
               {
                 award: 'W.W. McDowell Award',
                 year: 1967,
                 by: 'IEEE Computer Society'
               },
               {
                 award: 'National Medal of Science',
                 year: 1975,
                 by: 'National Science Foundation'
               },
               {
                 award: 'Turing Award',
                 year: 1977,
                 by: 'ACM'
               },
               {
                 award: 'Draper Prize',
                 year: 1993,
                 by: 'National Academy of Engineering'
               }
             ]
   }
)
		
		

33.3.5. update

根據query條件修改,如果不存在則插入,允許修改多條記錄

db.foo.update({'yy':5},{'$set':{'xx':2}},upsert=true,multi=true)
		

33.3.6. remove

刪除uid=10的記錄

		
db.foo.remove({'uid':10})
		
		

刪除所有的記錄

db.foo.remove()
		

33.3.6.1. 刪除條件使用 _id

db.foo.remove({ "_id" : ObjectId("56e10b66a22ef1b1408b4567")})
			

33.3.7. 刪除 collection

db.collection.drop()
		

33.3.8. count()

		
> db.access.count()
51528
> db.access.count()
104401
		
		

33.3.9. group()

group()類似SQL中的Group by

		
> db.test.group({key: {remote_addr: true}, initial: {count: 0}, reduce: function(obj, prev) {prev.count++}});
[
	{
		"remote_addr" : "192.168.2.76",
		"count" : 3
	},
	{
		"remote_addr" : "192.168.2.70",
		"count" : 1
	}
]
		
		

33.3.10. find() MongoDB 2.x

查找所有 所有記錄

db.foo.find()                list objects in collection foo
db.foo.find( { a : 1 } )     list objects in foo where a == 1
		

查找一條記錄

db.foo.findOne()
		

根據條件檢索10條記錄

db.foo.find({'name':'neo'}).limit(10)
		

sort排序

db.foo.find({'name':'neo'}).sort({'Dt',-1})
db.foo.find().sort({'Ct':-1}).limit(1)
		

count記錄統計操作

db.foo.count()
		

distinct操作,去重複查詢指定列,

db.foo.distinct('name')
		

”>=”操作

		
db.foo.find({"timestamp": {"$gte" : 2}})
		
		

子對象的查找

db.foo.find({'address.city':'shenzhen'})
		

33.3.11. find() MongoDB 3.x

db.getCollection('tracker').find({name:"81004892"})
	

33.3.11.1. Query

33.3.11.2. 包含欄位

		
db.getCollection('pyramidSelling').find({},{'phone':1})			
		
		

33.3.11.3. 排除欄位

db.getCollection('pyramidSelling').find({},{'phone':0})			
		

33.3.11.4. sort()

db.getCollection('tracker').find({name:"81004892"}).sort({ctime: -1})
		

33.3.12. 管道操作

		
cat data.bson | mongo test
		
		

33.3.13. shutdownServer

關閉MongoDB資料庫

		
db.shutdownServer()
		
		

33.3.14. aggregate

33.3.14.1. project

33.3.14.1.1. $split
{
    "_id" : ObjectId("591a710320156761bdf68a06"),
    "_class" : "mis.domain.PyramidSelling",

	...
	...

    "status" : true,
    "createdDate" : ISODate("2017-05-16T03:24:51.511Z")
}			
				
				
db.getCollection('pyramidSelling').aggregate([
  { $project : { _class : { $split: ["$_class", "."] } } }
]);			
				
				
33.3.14.1.2. substr
db.getCollection('pyramidSelling').aggregate(
   [
      {
         $project: {
            userName: 1,
            phone: {
               prefix: { $substr: [ "$phone", 0, 3 ] },
               mobile: { $substr: [ "$phone", 3, 11 ] }
            },
         }
      }
   ]
)				
				

33.3.14.2. groupby + sum

select username, sum(balance) as total from users group by member.

			
db.member.aggregate([{ 
    $group: { 
        _id: "$username", 
        total: { $sum: "$balance" }
    } 
}])