摘要: 现在做网站很流行用织梦和帝国啊,所以想学习这两个建站模板。上网查了下这两个都是用php写的,生成的网站是php+mysql;无耐先学php吧,在学习这两个模板。php环境搭建;1、需要下载几个东西:Apachehttpd-2.2.22-win32-x86-openssl-0.9.8t.msiPHPphp-5.3.10-Win32-VC9-x86.zipMysqlhttp://www.mysql.com/downloads/点击下载;PHPEclipse Php的IDE因为我电脑上已安装了eclipse为了方便我选择了PHPEclipse,网上下载的地址也较多;http://www.oschin 阅读全文
posted @ 2013-04-11 16:52 闲潭梦落花 阅读(857) 评论(3) 推荐(1) 编辑

1、启动mongoDb数据库:

  进入mongoDB的安装目录,执行如下命令

  C:\Program Files\MongoDB\Server\3.0\bin>mongod.exe --dbpath "C:\Program Files\MongoDB\Server\3.0\db"

  启动成功后在打开一个cmd窗口,进入mongoDB的安装目录,执行mongo.exe,默认进入test库


2、use DATABASE_NAME 用于创建数据库。该命令如果数据库不存在,将创建一个新的数据库, 否则将返回现有的数据库。

3、如果想查询数据库列表,那么使用命令 show dbs ;要显示的数据库,需要至少插入一个文档进去。MongoDB的默认数据库是test。 如果没有创建任何数据库,那么集合将被保存在测试数据库。

4、db.dropDatabase() 命令用于删除现有的数据库。

如果想删除新的数据库 <mydb>, 那么 dropDatabase() 命令将如下所示:

1
2
3
4
5
>use mydb
switched to db mydb
>db.dropDatabase()
>{ "dropped" : "mydb", "ok" : 1 }
>

5、db.createCollection(name, options) 用于创建集合。 在命令中, name 是要创建集合的名称。 Options 是一个文档,用于指定集合的配置
options:
    字段     类型              描述
  capped     Boolean     (可选)如果为true,它启用上限集合。上限集合是一个固定大小的集合,当它达到其最大尺寸会自动覆盖最老的条目。 如果指定true,则还需要指定参数的大小。
  autoIndexID  Boolean     (可选)如果为true,自动创建索引_id字段。默认的值是 false.
  size       number     (可选)指定的上限集合字节的最大尺寸。如果capped 是true,那么还需要指定这个字段。
  max       number     (可选)指定上限集合允许的最大文件数。

在MongoDB中并不需要创建集合。 当插入一些文档 MongoDB 会自动创建集合。

>db.yiibai.insert({"name" : "yiibai"})
>show collections
mycol
mycollection
system.indexes
yiibai
>

6、删除集合MongoDB 的 db.COLLECTION_NAME.drop() 用于从数据库中删除集合。

下面给出的例子将删除给定名称的集合:mycollection

>use mydb
switched to db mydb
>db.mycollection.drop()
true
>

7、插入文档:db.COLLECTION_NAME.insert(document)

>db.mycol.insert({
_id: ObjectId(7df78ad8902c),
title: 'MongoDB Overview', 
description: 'MongoDB is no sql database',
by: 'yiibai tutorials',
url: 'http://www.yiibai.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})

这里 mycol 是我们的集合名称,它是在之前的教程中创建。如果集合不存在于数据库中,那么MongoDB创建此集合,然后插入文档进去。

在如果我们不指定_id参数插入的文档,那么 MongoDB 将为文档分配一个唯一的ObjectId。
_id 是12个字节十六进制数在一个集合的每个文档是唯一的。 12个字节被划分如下:
_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)
要以单个查询插入多个文档,可以通过文档 insert() 命令的数组方式。
db.mycol.insert({},{},{},……)

8、查询文档:db.COLLECTION_NAME.find(),find() 方法将在非结构化的方式显示所有的文件。 如果显示结果是格式化的,那么可以用pretty() 方法。
语法

>db.mycol.find().pretty()

除了find()方法还有findOne()方法,仅返回一个文档。


MongoDB的Where条件:
    操作                            语法                                             示例 RDBMS等效语句
    Equality(等于)             {<key>:<value>}                            db.mycol.find({"by":"yiibai tutorials"}).pretty() where by = 'yiibai tutorials'
    Less Than(小于)              {<key>:{$lt:<value>}}                   db.mycol.find({"likes":{$lt:50}}).pretty() where likes < 50
    Less Than Equals(小于等于) {<key>:{$lte:<value>}}                  db.mycol.find({"likes":{$lte:50}}).pretty() where likes <= 50
    Greater Than(大于)            {<key>:{$gt:<value>}}                   db.mycol.find({"likes":{$gt:50}}).pretty() where likes > 50
    Greater Than Equals(大于等于) {<key>:{$gte:<value>}}             db.mycol.find({"likes":{$gte:50}}).pretty() where likes >= 50
    Not Equals(不等于)            {<key>:{$ne:<value>}}                    db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50


MongoDB的and条件:
在 find()方法,如果您传递多个键通过","将它们分开,那么MongoDB对待它就如AND条件一样。基本语法如下所示:

>db.mycol.find({key1:value1, key2:value2}).pretty()

MongoDB的or条件:

要查询基于OR条件的文件,需要使用$or关键字。OR的基本语法如下所示:

>db.mycol.find({
$or: [
{key1: value1}, {key2:value2}
]
}).pretty()

例子

等效于SQL的where子句:'where likes>10 AND (by = 'yiibai tutorials' OR title = 'MongoDB Overview')'

>db.mycol.find("likes": {$gt:10}, $or: [{"by": "yiibai tutorials"}, {"title": "MongoDB Overview"}] }).pretty()

9、更新、添加文档 

update()方法的基本语法如下

>db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)

下面的例子将设置其标题“MongoDB Overview”的文件为新标题为“New MongoDB Tutorial”

>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}})
>db.mycol.find()
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"New MongoDB Tutorial"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Tutorial Overview"}
>

默认情况下,MongoDB将只更新单一文件,更新多,需要一个参数 'multi' 设置为 true。

>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}},{multi:true})

save() 方法替代或添加文档:>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

下面的例子将替换该文件_id '5983548781331adf45ec7'

>db.mycol.save(
{
"_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Yiibai New Topic", "by":"Yiibai Yiibai"
}
)
>db.mycol.find()
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"Yiibai Yiibai New Topic", "by":"Yiibai Yiibai"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Yiibai Overview"}
>

10、删除文档 


MongoDB 的 remove()方法用于从集合中删除文档。remove()方法接受两个参数。一个是标准缺失,第二是justOne标志

deletion criteria : 根据文件(可选)删除条件将被删除。

justOne : (可选)如果设置为true或1,然后取出只有一个文档。

下面的例子将删除所有的文件,其标题为 'MongoDB Overview'

>db.mycol.remove({'title':'MongoDB Overview'})

如果有多个记录,并要删除仅第一条记录,然后在 remove()方法设置参数 justOne 。

>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

如果没有指定删除条件,则MongoDB将从集合中删除整个文件。这相当于SQL的 truncate 命令。

>db.mycol.remove({})
>db.mycol.find()
>

11、find()部分字段(mongodb投影)

mongodb投影意义是只选择需要的数据,而不是选择整个一个文档的数据。如果一个文档有5个字段,只需要显示3个,只从中选择3个字段。
MongoDB的find()方法,解释了MongoDB中查询文档接收的第二个可选的参数是要检索的字段列表。在MongoDB中,当执行find()方法,那么它会显示一个文档的所有字段。要限制这一点,需要设置字段列表值为1或0。1是用来显示字段,而0被用来隐藏字段。

语法
find()方法的基本语法如下

>db.COLLECTION_NAME.find({},{KEY:1})

12、Limit() 方法显示多少行

要在MongoDB中限制记录,需要使用limit()方法。 limit() 方法接受一个数字类型的参数,这是要显示的文档数量。
语法
limit()方法的基本语法如下

>db.COLLECTION_NAME.find().limit(NUMBER)

还有一个方法 skip()也接受数字类型参数并用于跳过文件数。

语法
skip() 方法的基础语法如下所示:

>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

例子:

下面的例子将仅显示第二个文档。
从第二行开始查,只查一条:

>db.mycol.find({},{"title":1,_id:0}).limit(1).skip(1)
{"title":"NoSQL Overview"}
>

请注意,skip() 方法的默认值是 0


13、文档排序(对查询出的数据进行排序)

要排序MongoDB中的文档,需要使用 sort()方法。 sort() 方法接受一个包含字段列表以及排序顺序的文档。 要使用1和-1指定排序顺序。1用于升序,而-1是用于降序。
语法
sort()方法的基本语法如下

>db.COLLECTION_NAME.find().sort({KEY:1})

下面的例子将显示的文件排序按标题降序排序。

>db.mycol.find({},{"title":1,_id:0}).sort({"title":-1})
{"title":"Yiibai Yiibai Overview"}
{"title":"NoSQL Overview"}
{"title":"MongoDB Overview"}
>

请注意,如果不指定排序类型,那么 sort() 方法将以升序排列文档。

 

14、MongoDB索引
索引支持查询高效率执行。如果没有索引,MongoDB必须扫描集合中的每一个文档,然后选择那些符合查询语句的文档。若需要 mongod 来处理大量数据,扫描是非常低效的。
索引是特殊的数据结构,存储在一个易于设置遍历形式的数据的一小部分。索引存储在索引中指定特定字段的值或一组字段,并排序字段的值。
要创建索引,需要使用MongoDB的ensureIndex()方法。
语法
ensureIndex()方法的基本语法如下

>db.COLLECTION_NAME.ensureIndex({KEY:1})

这里键是要创建索引字段,1是按名称升序排序。若以按降序创建索引,需要使用 -1.

例子:

>db.mycol.ensureIndex({"title":1})
>

在 ensureIndex()方法,可以通过多个字段,来创建多个字段索引。

>db.mycol.ensureIndex({"title":1,"description":-1})

ensureIndex() 方法还接受选项列表(这是可选),其列表如下:

      参数           类型             描述
    background      Boolean          构建索引在后台以便建立索引不阻止其它数据库活动。指定true时建立在后台。缺省值是false.
    unique           Boolean          创建一个唯一的索引,以使集合将不接受插入的的文档,其中的索引关键字或键匹配索引的现有值。指定true以创建唯一索引。缺省值是 false.
    name           string            索引的名称。如果未指定,MongoDB通过连接索引的字段和排序顺序的名称生成一个索引名。
    dropDups                Boolean          创建一个字段唯一索引时可能会有重复。MongoDB索引键仅第一次出现,并从集合中删除包含该键后续出现的所有文档。指定true以创建唯一索引。缺省值是 false.
    sparse                    Boolean          如果为true,索引只引用与指定的字段的文档。这些索引使用更少的空间,但在某些情况下表现不同(特别是排序)。缺省值是 false.
    expireAfterSeconds  integer          指定的值,以秒为单位,作为一个TTL控制MongoDB保留在此集合文件多久。
    v                            index version      索引版本号。默认的索引版本取决于mongod创建索引时运行的版本。
    weights                   document                   重量(weight )是一个数字,它是从1至99,999的数字,表示字段相对于其它索引字段在得分方面的意义。
    default_language     string          对于文本索引,并为词干分析器和标记生成器列表中的语言决定了停用词和规则。它的默认值: english.
    language_override   string          对于一个文本索引,包含在文档中指定字段的名称,语言来覆盖默认语言。它的默认值:language.


15、MongoDB 聚合

聚合操作处理数据记录并返回计算结果。从多个文档聚合分组操作数值,并可以执行多种对分组数据业务返回一个结果。 在SQL中的count(*),使用group by 与mongodb的聚合是等效的。 对于MongoDB的聚合,使用的是aggregate()方法。
语法
aggregate()方法的基本语法如下

>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

例子:

在集合中有以下数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
_id: ObjectId(7df78ad8902c)
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by_user: 'Yiibai Yiibai ',
url: 'http://www.yiibai.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
},
{
_id: ObjectId(7df78ad8902d)
title: 'NoSQL Overview',
description: 'No sql database is very fast',
by_user: 'Yiibai Yiibai',
url: 'http://www.yiibai.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 10
},
{
_id: ObjectId(7df78ad8902e)
title: 'Neo4j Overview',
description: 'Neo4j is no sql database',
by_user: 'Neo4j',
url: 'http://www.neo4j.com',
tags: ['neo4j', 'database', 'NoSQL'],
likes: 750
}

现在从上面的集合,如果想知道每一个用户编写的教程是多少,那么使用aggregate()方法,如下图所示的列表:

> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
{
"result" : [
{
"_id" : "Yiibai Yiibai",
"num_tutorial" : 2
},
{
"_id" : "Neo4j",
"num_tutorial" : 1
}
],
"ok" : 1
}
>

用于上述用途将等效于sql查询: select by_user, count(*) from mycol group by by_user

另外,在上述例子中,我们已经使用字段by_user进行分组并计算总和,也就是by_user 出现各个次数。一个列表中可用的聚集表达式。

    表达式        描述                                            示例
    $sum      从集合累加所有文档中的定义值                db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
    $avg      从集合中的所有文档计算所有给定值的平均值          db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
    $min      从集合中获取的所有文件的最小的相应值                 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
    $max      从集合中的所有文档中的相应值中获取最大值          db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
    $push      插入数组值到文档中                      db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
    $addToSet   插入值所产生的数组到文档中,但不会产生重复            db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
    $first      从源文件获取根据分组的头文件。通常,这使得只能意会再加上一些以前应用“$sort” -stage db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
    $last      从源文件获取根据分组的最后文件。通常,这使得只能意会再加上一些以前应用 “$sort”-stage. db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])


16、MongoDB创建备份

要使用 mongodump 命令来执行 MongoDB 数据库备份。此命令将转储服务器的所有数据到转储目录。有许多可用的选项,通过它可以限制数据量或创建远程服务器备份。
语法
mongodump命令的基本语法如下

>mongodump
例子
启动 mongod 服务器。假设 mongod 服务器运行在本地主机和端口 27017. 现在打开一个命令提示符,然后转到你的MongoDB实例的bin目录,然后输入命令mongodump。

考虑mycol集合有以下数据。
>mongodump
该命令将连接到服务器127.0.0.1和端口27017,并备份所有数据到服务器上的目录: /bin/dump/.

以上是可用的选项能够与mongodump命令一起使用的列表。

此命令将只备份指定数据库到指定的路径

语法 描述 示例
mongodump --host HOST_NAME --port PORT_NUMBER 这个命令将备份指定的mongod实例的所有数据库 mongodump --host yiibai.com --port 27017
mongodump --dbpath DB_PATH --out BACKUP_DIRECTORY mongodump --dbpath /data/db/ --out /data/backup/
mongodump --collection COLLECTION --db DB_NAME 此命令将仅备份指定的特定数据库集合 mongodump --collection mycol --db test

17、数据恢复

要恢复备份的MongoDB数据,则使用mongorestore命令。该命令将从备份目录恢复所有的数据。
语法
mongorestore命令的基本语法
>mongorestore

posted @ 2015-11-18 16:55 闲潭梦落花 阅读(1384) 评论(3) 推荐(1) 编辑
摘要: Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息。用户在应用程序的页面切换时,Session对象的变量不会被清除。对于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的;而不同用户会话访问到的Sess... 阅读全文
posted @ 2015-01-16 15:56 闲潭梦落花 阅读(23457) 评论(0) 推荐(4) 编辑
摘要: 在JavaScript很多人复制一个对象的时候都是直接用"=",因为大家都觉得脚本语言是没有指针、引用、地址之类的,所以直接用"="就可以把一个对象复制给另外一个对象,如下代码:var i1 = 1; var i2 = i1; i2 = 2; alert("i1:"+i1+",i2:"... 阅读全文
posted @ 2014-06-24 14:02 闲潭梦落花 阅读(9314) 评论(0) 推荐(1) 编辑
摘要: VS用了这么久都没有这样的问题,昨天突然发现在自己电脑时间不对了,就调了下,以后这问题都来了。每次运行项目都要重新编译下,不管改不改底层代码。这让我很痛苦,浪费大量时间,找了好久才得到答案:1.时间问题 所创建的文件的时间比如是:2011-09-22 09:03:22,那么你的系统时间之前被你改动过当前时间是:2011-08-22 09:03:22。这下好了,vs每次编译的时候都会检查每个文件的最后修改日期,发现是上一个编译时间之后的,都会重新编译。所以在这一个月内,每次都会重新编译文件。解决办法:a.将文件稍作修改,加个注释之类的。然后重新保存,让其和系统时间一致。这样的话,可能有大量的.. 阅读全文
posted @ 2013-06-06 10:05 闲潭梦落花 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 二分查找法(递归算法) /// <summary> /// 二分查找法(递归算法) /// 此算法的前提是arry数组为有序数组。是排好序的。 /// </summary> /// <param name="arry">在哪个数组中查找</param> /// <param name="number">要查找 的数</param> /// <param name="star">从数组的哪个坐标下始</param> /// <param 阅读全文
posted @ 2013-05-08 10:10 闲潭梦落花 阅读(976) 评论(0) 推荐(0) 编辑
摘要: 位运算位运算符允许对整型数中指定的位进行置位。如果左右参数都是字符串,则位运算符将操作字符的 ASCII 值。例子名称结果$a & $bAnd(按位与)将把 $a 和 $b 中都为 1 的位设为 1。$a | $bOr(按位或)将把 $a 或者 $b 中为 1 的位设为 1。$a ^ $bXor(按位异或)将把 $a 和 $b 中不同的位设为 1。~ $aNot(按位非)将 $a 中为 0 的位设为 1,反之亦然。$a << $bShift left(左移)将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。$a >> $bShift right 阅读全文
posted @ 2013-05-07 10:30 闲潭梦落花 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 二进制补习--原码 反码 补码 1、二进制的最高位是符号位:0表示正数,1表示负数。 2、正数的原码、反码、补码都一样。 3、负数的反码=它的原码符号位不变,其它位取反(0-〉1,1-〉0)。 4、负数的补码=它的反码+1. 5、0的反码、补码都是0. 6、在计算机运算的时候,都是以补码的方式来运算的。 阅读全文
posted @ 2013-05-03 10:59 闲潭梦落花 阅读(997) 评论(0) 推荐(0) 编辑
摘要: WEB打印控件Lodop(V6.x)使用说明及样例Lodop是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码生成复杂打印页。控件功能强大,却简单易用,所有调用如同JavaScript扩展语句,主要接口函数如下:●PRINT_INIT(strPrintTaskName)打印初始化●SET_PRINT_PAGESIZE(intOrient,intPageWidth,intPageHeight,strPageName)设定纸张大小●ADD_PRINT_HTM(intTop,intLeft,intWidth,intHeight,strHtml)增加超文本项●ADD_PRINT_TEXT(in 阅读全文
posted @ 2013-04-27 17:31 闲潭梦落花 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 递归:View Code 1 /// <summary> 2 /// 递归算法 3 /// </summary> 4 /// <param name="i">第几位数</param> 5 /// <returns>返回的第几位数的值</returns> 6 /// 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少 7 /// 用递归算法实现 8 /// Console.WriteLine("\n第30位数是{0}", TestQuikeS. 阅读全文
posted @ 2013-04-23 12:05 闲潭梦落花 阅读(632) 评论(0) 推荐(0) 编辑
摘要: View Code 1 static void Main(string[] args) 2 { 3 4 5 Traversing("C:\\Documents and Settings\\Administrator\\桌面\\京广高速\\广州南站\\无交叉线岔\\"); 6 Console.ReadKey(); 7 } 8 /// <summary> 9 /// 几乎最简练的文件夹遍历方法(8行代码,广度优先算法)10 /// </summary>11 ... 阅读全文
posted @ 2013-04-23 11:13 闲潭梦落花 阅读(564) 评论(1) 推荐(0) 编辑
点击右上角即可分享
微信分享提示