热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDB数据库使用总结

安装mongodb$#replace1.6.4intheurlbelowwiththeversionyouwant$curlhttp://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.6.4.tgzmongo.tgz$tarxzfmongo.tgz$cdmongo

安装mongodb

$ # replace "1.6.4" in the url below with the version you want

$ curl http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.6.4.tgz > mongo.tgz

$ tar xzf mongo.tgz

$ cd mongo

$./mongod  #启动服务器

$./mongo #启动客户端

1.mongodb 命令列表

  Mongo查询语法与SQL语法对照表

MySQL executable

Oracle executable

Mongo executable

mysql

oracle 

mongod 

mysql 

sqlplus 

mongo 

mongodb查询语法与SQL语法对比

SQL Statement 

Mongo Query Language Statement 

C++客户端调用语法

using namespace bson;

DBClientConnection c;

c.connect("somehost");

CREATE TABLE USERS (aNumber, b Number)

db.createCollection("mycoll")

INSERT INTO USERS VALUES(1,1)

db.users.insert({a:1,b:1})

// GENOID is optional. if not done by client, server will add an _id

c.insert("mydb.users", BSON(GENOID<<"a"<<1<<"b"<<1));

// then optionally:

string err = c.getLastError();

SELECT a,b FROM users

db.users.find({}, {a:1,b:1})

auto_ptr cursor = c.query("mydb.users", Query(), 0, 0, BSON("a"<<1<<"b"<<1));

SELECT * FROM users

db.users.find()

auto_ptr cursor = c.query("mydb.users", Query());

SELECT * FROM users WHERE age=33

db.users.find({age:33})

auto_ptr cursor = c.query("mydb.users", QUERY("age"<<33))

// or:

auto_ptr cursor = c.query("mydb.users", BSON("age"<<33))

SELECT a,b FROM users WHERE age=33

db.users.find({age:33}, {a:1,b:1})

SELECT * FROM users WHERE age=33 ORDER BY name

db.users.find({age:33}).sort({name:1})

auto_ptr cursor = c.query("mydb.users", QUERY("age"<<33).sort("name"));

SELECT * FROM users WHERE age>33

db.users.find({'age':{$gt:33}})})

SELECT * FROM users WHERE age<33

db.users.find({'age':{$lt:33}})})

SELECT * FROM users WHERE name LIKE "%Joe%"

db.users.find({name:/Joe/})

SELECT * FROM users WHERE name LIKE "Joe%"

db.users.find({name:/^Joe/})

SELECT * FROM users WHERE age>33 AND age<=40

db.users.find({'age':{$gt:33,$lte:40}})})

auto_ptr cursor = c.query("mydb.users", QUERY("age"<

SELECT * FROM users ORDER BY name DESC

db.users.find().sort({name:-1})

SELECT * FROM users WHERE a=1 and b='q'

db.users.find({a:1,b:'q'})

SELECT * FROM users LIMIT 10 SKIP 20

db.users.find().limit(10).skip(20)

auto_ptr cursor = c.query("mydb.users", Query(), 10, 20);

SELECT * FROM users WHERE a=1 or b=2

db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )

SELECT * FROM users LIMIT 1

db.users.findOne()

bo obj = c.findOne("mydb.users", Query());

SELECT DISTINCT last_name FROM users

db.users.distinct('last_name')

// no helper for distinct in c++ driver, so send command manually

bo cmdResult;

bool ok = c.runCommand("mydb", BSON("distinct"<<"users"<

list results;

cmdResult["values"].Obj().Vals(results);

SELECT COUNT(*y)

FROM users

db.users.count()

SELECT COUNT(*y)

FROM users where AGE > 30

db.users.find({age: {'$gt': 30}}).count()

unsigned long long n = c.count("mydb.users", QUERY("age:"<

SELECT COUNT(AGE) from users

db.users.find({age: {'$exists':true}}).count()

CREATE INDEX myindexname ON users(name)

db.users.ensureIndex({name:1})

c.ensureIndex("mydb.users", BSON("name"<<1));

CREATE INDEX myindexname ON users(name,ts DESC)

db.users.ensureIndex({name:1,ts:-1})

EXPLAIN SELECT * FROM users WHERE z=3

db.users.find({z:3}).explain()

UPDATE users SET a=1 WHERE b='q'

db.users.update({b:'q'}, {$set:{a:1}}, false,true)

UPDATE users SET a=a+2 WHERE b='q'

db.users.update({b:'q'}, {$inc:{a:2}}, false,true)

c.update("mydb.users", QUERY("b"<<"q"), BSON("$inc"<

// then optionally:

string err = c.getLastError();

bool ok = err.empty();

DELETE FROM users WHERE z="abc"

db.users.remove({z:'abc'});

c.remove("mydb.users", QUERY("z"<<"abc"));

// then optionally:

string err = c.getLastError();

命令帮助列表:

  使用mongo进入交互式客户端:

   > help

        db.help()                    help on db methods

        db.mycoll.help()             help on collection methods

        rs.help()                    help on replica set methods

        help admin                   administrative help

        help connect                 connecting to a db help

        help keys                    key shortcuts

        help misc                    misc things to know

        help mr                      mapreduce

        show dbs                     show database names

        show collections             show collections in current database

        show users                   show users in current database

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

        use                set current database

        db.foo.find()                list objects in collection foo

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

        it         result of the last line evaluated; use to further iterate

        DBQuery.shellBatchSize = x   set default number of items to display on shell

        exit                         quit the mongo shell

> db.help()

DB methods:

        db.addUser(username, password[, readOnly=false])

        db.auth(username, password)

        db.cloneDatabase(fromhost)

        db.commandHelp(name) returns the help for the command

        db.copyDatabase(fromdb, todb, fromhost)

        db.createCollection(name, { size : ..., capped : ..., max : ... } )

        db.currentOp() displays the current operation in the db

        db.dropDatabase()

        db.eval(func, args) run code server-side

        db.getCollection(cname) same as db['cname'] or db.cname

        db.getCollectionNames()

        db.getLastError() - just returns the err msg string

        db.getLastErrorObj() - return full status object

        db.getMongo() get the server connection object

        db.getMongo().setSlaveOk() allow this connection to read from the nonmaster member of a replica pair

        db.getName()

        db.getPrevError()

        db.getProfilingLevel() - deprecated

        db.getProfilingStatus() - returns if profiling is on and slow threshold 

        db.getReplicationInfo()

        db.getSiblingDB(name) get the db at the same server as this one

        db.isMaster() check replica primary status

        db.killOp(opid) kills the current operation in the db

        db.listCommands() lists all the db commands

        db.printCollectionStats()

        db.printReplicationInfo()

        db.printSlaveReplicationInfo()

        db.printShardingStatus()

        db.removeUser(username)

        db.repairDatabase()

        db.resetError()

        db.runCommand(cmdObj) run a database command.  if cmdObj is a string, turns it into { cmdObj : 1 }

        db.serverStatus()

        db.setProfilingLevel(level,) 0=off 1=slow 2=all

        db.shutdownServer()

        db.stats()

        db.version() current version of the server

        db.getMongo().setSlaveOk() allow queries on a replication slave server

        db.fsyncLock() flush data to disk and lock server for backups

        db.fsyncUnock() unlocks server following a db.fsyncLock()

> db.mycoll.help()

DBCollection help

        db.mycoll.find().help() - show DBCursor help

        db.mycoll.count()

        db.mycoll.dataSize()

        db.mycoll.distinct( key ) - eg. db.mycoll.distinct( 'x' )

        db.mycoll.drop() drop the collection

        db.mycoll.dropIndex(name)

        db.mycoll.dropIndexes()

        db.mycoll.ensureIndex(keypattern[,options]) - options is an object with these possible fields: name, unique, dropDups

        db.mycoll.reIndex()

        db.mycoll.find([query],[fields]) - query is an optional query filter. fields is optional set of fields to return.

                                    e.g. db.mycoll.find( {x:77} , {name:1, x:1} )

        db.mycoll.find(...).count()

        db.mycoll.find(...).limit(n)

        db.mycoll.find(...).skip(n)

        db.mycoll.find(...).sort(...)

        db.mycoll.findOne([query])

        db.mycoll.findAndModify( { update : ... , remove : bool [, query: {}, sort: {}, 'new': false] } )

        db.mycoll.getDB() get DB object associated with collection

        db.mycoll.getIndexes()

        db.mycoll.group( { key : ..., initial: ..., reduce : ...[, cond: ...] } )

        db.mycoll.mapReduce( mapFunction , reduceFunction , )

        db.mycoll.remove(query)

        db.mycoll.renameCollection( newName , ) renames the collection.

        db.mycoll.runCommand( name , ) runs a db command with the given name where the first param is the collection name

        db.mycoll.save(obj)

        db.mycoll.stats()

        db.mycoll.storageSize() - includes free space allocated to this collection

        db.mycoll.totalIndexSize() - size in bytes of all the indexes

        db.mycoll.totalSize() - storage allocated for all data and indexes

        db.mycoll.update(query, object[, upsert_bool, multi_bool])

        db.mycoll.validate( ) - SLOW

        db.mycoll.getShardVersion() - only for use with sharding

> db.users.find()  #users是collection的名称

{ "_id" : ObjectId("4de71d5faf575684b391b8db"), "a" : 1, "b" : 1 }

> show dbs

admin   (empty)

local   (empty)

test    0.203125GB

> show collections

mycoll

system.indexes

testCollection

users

 java端调用

 1到https://github.com/mongodb/mongo-java-driver/downloads 下载java客户端需要的jar,引入工程里面,

 2.

    package com.alibaba.asc.demoLearnCenter.mongo;

import java.net.UnknownHostException;  

import java.util.Set;  

import com.mongodb.BasicDBObject;  

import com.mongodb.DB;  

import com.mongodb.DBCollection;  

import com.mongodb.DBCursor;  

import com.mongodb.Mongo;  

import com.mongodb.MongoException;  

public class MongoDemo1 {  

    public static void main(String[] args) throws UnknownHostException, MongoException {  

        Mongo m = new Mongo("10.20.150.205", 27017);  

        DB db = m.getDB("test");  

        Set colls = db.getCollectionNames();  

        for (String s : colls) {  

            System.out.println(s);  

        }  

        DBCollection coll = db.getCollection("testCol");  

        BasicDBObject doc = new BasicDBObject();  

        doc.put("name", "MongoDB");  

        doc.put("type", "database");  

        doc.put("count", 1);  

        BasicDBObject info = new BasicDBObject();  

        info.put("x", 203);  

        info.put("y", 102);  

        doc.put("info", info);  

        coll.insert(doc);  

        System.out.println(coll.getCount());  

        DBCursor cur = coll.find();  

        while(cur.hasNext()) {  

            System.out.println(cur.next());  

        }  

        BasicDBObject query = new BasicDBObject();  

        query.put("type", "database");  

        cur = coll.find(query);  

        while(cur.hasNext()) {  

            System.out.println(cur.next());  

        }  

    }  

}  

输出:

mycoll

system.indexes

testCollection

users

1

{ "_id" : { "$oid" : "4de72c04a1f3a9ef7fc0c750"} , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}

{ "_id" : { "$oid" : "4de72c04a1f3a9ef7fc0c750"} , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}


推荐阅读
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文详细介绍了Python编程语言的学习路径,涵盖基础语法、常用组件、开发工具、数据库管理、Web服务开发、大数据分析、人工智能、爬虫开发及办公自动化等多个方向。通过系统化的学习计划,帮助初学者快速掌握Python的核心技能。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 字节跳动夏季招聘面试经验分享
    本文详细记录了字节跳动夏季招聘的面试经历,涵盖了一、二、三轮面试的技术问题及项目讨论,旨在为准备类似面试的求职者提供参考。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
author-avatar
ENE的蓝白胖次
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有