实时搜索: mongodb 配置文件在哪

mongodb 配置文件在哪

482条评论 5042人喜欢 6648次阅读 241人点赞
windows系统跟Linux系统上都装有mongoDB数据库,求高人解答!! ...

Spring整合mongodb有哪些靠谱点的配置文件: hibernate新像叫hibernate-ogm 吧知道没式发布支持nosql数据库 或者使用spring-data-mongodb,spring目前应该比较

在Linux系统上装有一个MongoDB数据库,如何配置成Linux系统上的为主,Windows系统上的MongoDB为从数据库?: 在启动Linux上的mongodb时使用master参数,在windows上启动时使用slave参数试试。
不过官方文档推荐2.4以后都使用replica set,不要再使用主从复制了。
使用replica set需要3个以上的节点,可以设置两个或以上的数据节点,多个选举节点,节点数要是基数个,哪个节点时primary由系统自己决定就好。
没有试过在Linux和windows上同时打开mongodb。
开启mongodb的参数可以参考这里:
http://docs.mongodb.org/manual/reference/configuration-options/
主从复制信息参考这里:

http://docs.mongodb.org/manual/core/master-slave/

idea的mongo插件把线上的数据库怎么导到本地: 本机是Windows 7 32位,故下载的是mongodb-win32-i386-2.6.1.zip,后续例程均是基于该版本数据库。

2、配置环境变量

解压mongodb-win32-i386-2.6.1.zip文件到E:\,并重新命名mongodb-win32-i386-2.6.1文件夹为mongodb,目录结构如下图

并在系统设置中配置环境变量path = E:\mongodb\bin;( 便于在命令行中直接使用mogodb命令 )

3、配置MongoDB数据库

创建一个mongo.config配置文件,配置MongoDB数据库的dbpath(数据库存储路径)和logpath(日志文件存储路径);

你也可是使用 --dbpath选项和 --logpath选项来配置路径;
##store data here
dbpath=E:\mongodb\data

##all output go here
logpath=E:\mongodb\log\mongo.log
特别提示:

由于dbpath路径为 E:\mongodb\data ,而这个文件夹默认不存在,故 需手动创建 ,不然在执行MongoDB服务器时会提示找不到该文件夹;同理,也需 手动创建 一个 E:\mongodb\log 文件夹用于保存日志。

4、启动MongoDB服务器

使用 mongod.exe --config E:\mongodb\mongo.config 启动MongoDB服务器。--config 选项表示启动时通过 E:\mongodb\mongo.config配置文件的信息配置服务器。

5、连接MongoDB服务器

使用mongo.exe连接已经启动的MongoDB server。(如果第4步服务器没有启动成功,连接MongoDB服务器时会报第7步异常里的错误!)

启动成功后,进入mongodb shell命令行,在 mongodb shell命令行 中我们可以进行数据库的访问,已经对数据库执行CRUD操作。

6、添加MongoDB到Winodows服务

window服务来启动MongoDB 服务器。其实做到第5步,我们已经完成了对MongoDB数据的安装已经配置,可以直接开始鼓捣MongoDB CRUD命令

了,但是每次都通过第4步进行添加配置并启动难免麻烦,这才有了第6步添加MongoDB到window服务,实现了通过启动服务来启动MongoDB 服务

器。

1)添加MongoDB到Windows Service, 以便于通过window服务配置系统启动时MongoDB服务自动启动。配置成功后,在控制面板的服务中可看到该服务,如下所示:

C:\Users\Administrator> mongod --config D:\mongodb\mongo.config --install

2)启动MongoDB服务

C:\Users\Administrator> net start MongoDB

3)停止MongoDB服务

C:\Users\Administrator> net stop MongoDB

4)从windows服务中移除MongoDB服务

C:\Users\Administrator> mongod --remove

5)通过mongod --help查看更多的配置命令选项。

C:\Users\Administrator> mongod --help

--install install mongodb service
--remove remove mongodb service
7、异常:

warning: Failed to connect to 127.0.0.1:27017, reason: errno:10061

表示:没有启动MondoDB服务器,或启动服务器失败;

sentinel配置文件修改需要重启生效吗: @MongoDB安装后的一些简要配置:
1)在和bin目录同级的目录下面建一个data文件夹,data文件夹下面分别建立db和log文件夹来存储数据文件和日志文件【ps:也可以建立其他文件夹,自己知道在什么地方即可】

2)在和bin目录同级的目录下面建一个mongo.config文件(编码格式为utf8无bom格式,否则会报错),作为mongodb的配置文件。[ps:在启动的时候会用到]
---mongo.config文件内容如下:
##数据文件
dbpath=D:\mongodb\data\db

##日志文件
logpath=D:\mongodb\data\log\mongo.log

#错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件
logappend=true

#启用日志文件,默认启用
journal=true

#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=false

#端口号 默认为27017,注意这里端口修改为9888后,要用mongo --port=9888连接,否则报错。
port=9888

3)执行mongod启动,根据mongodb服务器指定的配置文件:
---cmd 进入安装目录中的bin目录下面
*** mongod --config d:\mongodb\mongo.config //注意,如果这里必须指定mongo.config所在目录,否则会报错Error parsing command line: required parameter is missing in 'config' try 'mongod --help' for more information,翻译成中文,即缺少所需的参数的意思。
如果配置没有问题的话,执行上边命令后,mongodb服务就会启动。

4)mongodb服务启动以后,下边就可以管理数据库了
新打开一个cmd命令行窗口,然后输入mongo就可以了。
---注意:如果端口号修改以后,连接数据库时要加上端口号:mongo --port=9888,否则会报错,目标计算机积极拒绝,无法连接。

5)快速启动mongodb(每次都通过CMD进入bin目录再执行相关命令,这个显然是不能接受的。)
进阶一
将MongoDB的bin目录加入系统的环境变量(path后边添加上bin目录),想怎么玩就能怎么玩了
进阶二
此时我们发现,每次启动它都需要加一些额外参数,这个显然也不方便。有大神已经给出了添加为windows服务的方式【ps:自行查找】。
但是呢,有利也有弊。我们总会有一些有强迫症的小伙伴喜欢自己来操作它何时启动,此时呢显然用启动关闭服务操作起来也有些繁琐。
进阶三
既然我们都已经把它加入环境变量,且每次都执行相同的命令来启动,那么为何不考虑一下把这个启动命令
写入一个快捷方式呢。
说干就干。
在桌面上新建一个快捷方式,如图所示。
创建成功后,我们何时想启动MongoDB直接点击这个快捷方式即可。不想用了,直接关闭快捷方式打开的窗口。

如何配置MongoDB的Java驱动程序MongoOptions在生产中使用: Java代码 收藏代码
// 构造方法
// replicaSetSeeds 所有 Server 的地址
// options 默认的查询设置

public Mongo( List<ServerAddress> replicaSetSeeds , MongoOptions options )
throws MongoException {
// 设置类变量
_addr = null;
_addrs = replicaSetSeeds;
_options = options;

// 应用查询设置
_applyMongoOptions();
// 创建 TCP 连接实例
_connector = new DBTCPConnector( this , _addrs );

// 启动数据清理线程
_cleaner = new DBCleanerThread();
_cleaner.start();
}

// 应用查询设置
void _applyMongoOptions() {
// 是否在 Slave Server 上执行查询
if (_options.slaveOk) slaveOk();
  // 应用默认的写入设置
setWriteConcern( _options.getWriteConcern() );
}

// 应用默认的写入设置
public void setWriteConcern( WriteConcern concern ){
_concern = concern;
}

  涉及的其他类:
  ServerAddress 用于保存主机名和所使用的端口的信息
  MongoOptions 用于保存查询设置(是否在 Slave 上进行查询,超时设置等)
  WriteConcern 写入参数设置,包括:Server 数量,写入超时设置,是否立即将结果同步到文件系统中
  DBTCPConnector 表示 TCP 数据连接,后续文章中将详细介绍。
  DBCleanerThread 清理线程,每隔一段时间清理各个DB 的 DBCursor

获取所有数据库的名称

  实现如下:
Java代码 收藏代码
// 获取所有数据库的名称
public List<String> getDatabaseNames()
throws MongoException {
// 创建表示数据库命令的 DBOBject
BasicDBObject cmd = new BasicDBObject();
cmd.put("listDatabases", 1);

// 使用 admin 数据库执行命令并返回结果
CommandResult res = getDB( "admin" ).command(cmd, getOptions());
// 有错误的情况下抛出异常
res.throwOnError();

// 获取结果中的 databases 属性,即数据库列表
List l = (List)res.get("databases");

// 遍历 databases,将名称保存到一个 list 中,并返回结果
List<String> list = new ArrayList<String>();

for (Object o : l) {
list.add(((BasicDBObject)o).getString("name"));
}
return list;
}

  涉及的其他类:
  BasicDBObject 与 MongoDB 交互时使用的数据结构,实际相当于 Java 中的 Map,或 JavaScript 中的 object
  CommandResult 操作执行的结果,继承 BasicDBObject,提供一些便捷的方法,实际仍然是在 DBObject 中查询相应的属性。

mongodb+django 怎么配置:

settings.py

import mongoengine

# ...

# DATABASES section should be:
DATABASES = {
    'default': {
        'ENGINE': '',
    },
}

SESSION_ENGINE = 'mongoengine.django.sessions'

_MONGODB_USER = 'db_user'
_MONGODB_PASSWD = 'db_password'
_MONGODB_HOST = 'db_host'
_MONGODB_NAME = 'db_name'
_MONGODB_DATABASE_HOST = \
    'mongodb://%s:%s@%s/%s' \
    % (_MONGODB_USER, _MONGODB_PASSWD, _MONGODB_HOST, _MONGODB_NAME)

mongoengine.connect(_MONGODB_NAME, host=_MONGODB_DATABASE_HOST)

# ...

AUTHENTICATION_BACKENDS = (
    'mongoengine.django.auth.MongoEngineBackend',
)

example of models.py:

from __future__ import unicode_literals
from mongoengine import Document, StringField, IntField, ListField

class Post(Document):
    title = StringField()
    status = IntField()
    tags = ListField()
    comments = ListField()

mongodb设置了管理用户,在mongoVUE内却无法登陆: 在MongoDB中,文档是对数据的抽象,它被使用在Client端和Server端的交互中。所有的Client端(各种语言的Driver)都会使用这种抽象,它的表现形式就是我们常说的BSON(Binary JSON )。
BSON是一个轻量级的二进制数据格式。
MongoDB能够使用BSON,并将BSON作为数据的存储存放在磁盘中。
当Client端要将写入文档,使用查询等等操作时,需要将文档编码为BSON格式,然后再发送给Server端。同样,Server端的返回结果也是编码为BSON格式再放回给Client端的。

如何实现mongodb中的sum汇总操作?: 首先在本地机器上安装并设置MongoDB服务。
从Mongo网站上下载MongoDB,解压到本地目录,比如C:>Mongo
在上一个文件夹内创建数据目录。比如:C:\Mongo\Data
如果数据文件存放在其他地方,那么在用mongod.exe命令启动MongoDB时,需要在命令行加参数—-dbpath
启动服务
MongoDB提供了两种方式:mongod.exe以后台进程启动;mongo.exe启动命令行界面,可做管理操作。这两个可执行文件都位于Mongo\bin目录下;
进入Mongo安装目录的bin目录下,比如:C:> cd Mongo\bin
有两种启动方式,如下:
mongod.exe –dbpath C:\Mongo\data

或者
mongod.exe –config mongodb.config

mongodb.config是Mongo\bin目录下的配置文件,需要在此配置文件中指定数据目录(比如,dbpath= C:\Mongo\Data)的位置。
连接到MongoDB,到这一步,mongo后台服务已经启动,可以通过http://localhost:27017查看。 MongoDB启动运行后,我们接下来看它的聚合函数。
实现聚合函数
在关系数据库中,我们可以在数值型字段上执行包含预定义聚合函数的SQL语句,比如,SUM()、COUNT()、MAX()和MIN()。但是在MongoDB中,需要通过MapReduce功能来实现聚合以及批处理,它跟SQL里用来实现聚合的GROUP BY从句比较类似。下一节将描述关系数据库中SQL方式实现的聚合和相应的通过MongoDB提供的MapReduce实现的聚合。
为了讨论这个主题,我们考虑如下所示的Sales表,它以MongoDB中的反范式形式呈现。
Sales表

#

列名

数据类型

1

OrderId

INTEGER

2

OrderDate

STRING

3

Quantity

INTEGER

4

SalesAmt

DOUBLE

5

Profit

DOUBLE

6

CustomerName

STRING

7

City

STRING

8

State

STRING

9

ZipCode

STRING

10

Region

STRING

11

ProductId

INTEGER

12

ProductCategory

STRING

13

ProductSubCategory

STRING

14

ProductName

STRING

15

ShipDate

STRING

基于SQL和MapReduce的实现
我们提供了一个查询的样例集,这些查询使用聚合函数、过滤条件和分组从句,及其等效的MapReduce实现,即MongoDB实现SQL中GROUP BY的等效方式。在MongoDB存储的文档上执行聚合操作非常有用,这种方式的一个限制是聚合函数(比如,SUM、AVG、MIN、MAX)需要通过mapper和reducer函数来定制化实现。
MongoDB没有原生态的用户自定义函数(UDFs)支持。但是它允许使用db.system.js.save命令来创建并保存JavaScript函数,JavaScript函数可以在MapReduce中复用。下表是一些常用的聚合函数的实现。稍后,我们会讨论这些函数在MapReduce任务中的使用。
聚合函数
Javascript 函数

SUM
db.system.js.save( { _id : "Sum" ,
value : function(key,values)
{
var total = 0;
for(var i = 0; i < values.length; i++)
total += values[i];
return total;
}});

AVERAGE
db.system.js.save( { _id : "Avg" ,
value : function(key,values)
{
var total = Sum(key,values);
var mean = total/values.length;
return mean;
}});

MAX
db.system.js.save( { _id : "Max" ,
value : function(key,values)
{
var maxValue=values[0];
for(var i=1;i

MIN
db.system.js.save( { _id : "Min" ,
value : function(key,values)
{
var minValue=values[0];
for(var i=1;i

VARIANCE
db.system.js.save( { _id : "Variance" ,
value : function(key,values)
{
var squared_Diff = 0;
var mean = Avg(key,values);
for(var i = 0; i < values.length; i++)
{
var deviation = values[i] - mean;
squared_Diff += deviation * deviation;
}
var variance = squared_Diff/(values.length);
return variance;
}});

STD DEVIATION
db.system.js.save( { _id : "Standard_Deviation"
, value : function(key,values)
{
var variance = Variance(key,values);
return Math.sqrt(variance);
}});

SQL和MapReduce脚本在四种不同的用例场景中实现聚合函数的代码片段如下表所示。
1.各地区的平均订单量
下面的查询是用来获取不同地区的平均订单量。

SQL Query

MapReduce Functions

SELECT
db.sales.runCommand(
{
mapreduce : "sales" ,

City,
State,
Region,
map:function()
{ // emit function handles the group by
emit( {
// Key
city:this.City,
state:this.State,
region:this.Region},
// Values
this.Quantity);
},

AVG(Quantity)
reduce:function(key,values)
{
var result = Avg(key, values);
return result;
}

FROM sales

GROUP BY City, State, Region
// Group By is handled by the emit(keys, values)
line in the map() function above

out : { inline : 1 } });

2.产品的分类销售总额
下面的查询是用来获取产品的分类销售额,根据产品类别的层级分组。在下面例子中,不同的产品类别作为个体维度,它们也可以被称为更复杂的基于层次的维度。

SQL 查询

MapReduce 函数

SELECT
db.sales.runCommand(
{
mapreduce : "sales" ,

ProductCategory, ProductSubCategory, ProductName,
map:function()
{
emit(
// Key
{key0:this.ProductCategory,
key1:this.ProductSubCategory,
key2:this.ProductName},
// Values
this.SalesAmt);
},

SUM(SalesAmt)
reduce:function(key,values)
{
var result = Sum(key, values);
return result;
}

FROM sales

GROUP BY ProductCategory, ProductSubCategory, ProductName
// Group By is handled by the emit(keys, values)
line in the map() function above

out : { inline : 1 } });

3. 一种产品的最大利润
下面的查询是用来获取一个给定产品基于过滤条件的最大利润。

SQL查询

MapReduce 函数

SELECT
db.sales.runCommand(
{
mapreduce : "sales" ,

ProductId, ProductName,
map:function()
{
if(this.ProductId==1)
emit( {
key0:this.ProductId,
key1:this.ProductName},
this.Profit);
},

MAX(SalesAmt)
reduce:function(key,values)
{
var maxValue=Max(key,values);
return maxValue;
}

FROM sales

WHERE ProductId=’1’
// WHERE condition implementation is provided in
map() function

GROUP BY ProductId, ProductName
// Group By is handled by the emit(keys, values)
line in the map() function above

out : { inline : 1 } });

4. 总量、总销售额、平均利润
这个场景的需求是计算订单的总数、总销售额和平均利润,订单ID在1到10之间,发货时间在2011年的1月1日到12月31日之间。下面的查询是用来执行多个聚合,比如,在指定年份以及指定的不同区域和产品类别范围里订单的总数、总销售额和平均利润。

SQL 查询

MapReduce 函数

SELECT
db.sales.runCommand(
{ mapreduce : "sales" ,

Region,
ProductCategory,
ProductId,
map:function()
{
emit( {
// Keys
region:this.Region,
productCategory:this.ProductCategory,
productid:this.ProductId},

// Values
{quantSum:this.Quantity,
salesSum:this.SalesAmt,
avgProfit:this.Profit} );
}

Sum(Quantity),
Sum(Sales),
Avg(Profit)
reduce:function(key,values)
{
var result=
{quantSum:0,salesSum:0,avgProfit:0};
var count = 0;
values.forEach(function(value)
{
// Calculation of Sum(Quantity)
result.quantSum += values[i].quantSum;
// Calculation of Sum(Sales)
result.salesSum += values[i].salesSum;
result.avgProfit += values[i].avgProfit;
count++;
}
// Calculation of Avg(Profit)
result.avgProfit = result.avgProfit / count;
return result;
},

FROM Sales

WHERE

Orderid between 1 and 10 AND
Shipdate BETWEEN ‘01/01/2011’ and
‘12/31/2011’
query : {
"OrderId" : { "$gt" : 1 },
"OrderId" : { "$lt" : 10 },
"ShipDate" : { "$gt" : "01/01/2011" },
"ShipDate" : { "$lt" : "31/12/2011" },
},

GROUP BY
Region, ProductCategory, ProductId
// Group By is handled by the emit(keys, values)
line in the map() function above

LIMIT 3;
limit : 3,

out : { inline : 1 } });

既然我们已经看了在不同业务场景下的聚合函数的代码示例,接下来我们准备来测试这些函数。
测试聚合函数
MongoDB的MapReduce功能通过数据库命令来调用。Map和Reduce函数在前面章节里已经使用JavaScript实现。下面是执行MapReduce函数的语法。
db.runCommand(

{ mapreduce : <collection>,

map : <mapfunction>,

reduce : <reducefunction>

[, query : <query filter object>]

[, sort : <sorts the input objects using this key. Useful for
optimization, like sorting by the emit key for fewer reduces>]

[, limit : <number of objects to return from collection>]

[, out : <see output options below>]

[, keeptemp: <true|false>]

[, finalize : <finalizefunction>]

[, scope : <object where fields go into javascript global scope >]

[, jsMode : true]

[, verbose : true]

}

)

Where the Output Options include:

{ replace : "collectionName" }

{ merge : "collectionName"

{ reduce : "collectionName" }

{ inline : 1}

  • 10月5日是谁的生日

    我的交行信用卡赠送了50元刷卡金,这个要怎么用?是免费的可以去超市刷吗: 刷信用卡消费时用作抵扣。交行信用卡的刷卡金在用户每次刷卡消费之后,银行后台系统会使用信用卡账户里的刷卡金的余额来直接抵扣此次刷卡消费产生的金额,并将抵扣部分的金额重新打回到信用卡账户中。就是当你在刷卡时,优先使用50...

    954条评论 5691人喜欢 5882次阅读 949人点赞
  • 五台山可以在几个寺庙许愿

    C4上7下,怎么计算: C(4,7)=P(4,7)/P(4,4)=(7*6*5*4)/(4*3*2*1)=35PS:C组合(无序)、P排列(有序),7总数、4选数 ...

    971条评论 4871人喜欢 6100次阅读 344人点赞
  • 昆明学府路在哪

    左膝盖软组织损伤有少量积液.二个月后膝盖上长了一个乒乓球大的囊肿.严重吗?咋治: 根据您描述的情况有以下两种可能:第一种是膝关节肿胀特别厉害,关节积液特别多,在髌上囊也就是膝盖上方出现囊肿。第二种是膝关节肿胀不明显,仅局限在局部的小囊肿,考虑有可能是半月板裂伤引起。具体是哪种需要你到医院做磁共振才...

    721条评论 2030人喜欢 5738次阅读 792人点赞
  • 5 6的比值多少

    生死狙击怎么放c4炸弹: 到安包点后再按“5”,最后鼠标左键,等一会就玩事了。拆弹是到C4的地方按“E” ...

    923条评论 4878人喜欢 3145次阅读 447人点赞