关于phpmongodbinsert的信息

本文目录一览:

mongodb 3.2怎么在php中连接

表标PHP已经自带了mongo功能,你就可以操作下面的代码(但是你必须有安装mongodb服务器)

一、连接数据库

使用下面的代码创建一个数据库链接

复制代码 代码如下:

?php

$connection = new Mongo(mongodb://192.168.1.5:27017); //链接到 192.168.1.5:27017//27017端口是默认的。

$connection = new Mongo( “example.com” ); //链接到远程主机(默认端口)

$connection = new Mongo( “example.com:65432” ); //链接到远程主机的自定义的端口

print_r($connection-listDBs());//能打印出数据库数组,看看有几个数据库。

?

如图:

上图说有一个数据库名字叫local,总大小1个字节,他是空的。看见ok表示运行成功。

现在你可以使用$connection链接来操作数据库了

选择数据库

使用下面的代码来选择一个数据库

复制代码 代码如下:

?php

$db = $connection-dbname;

?

这里的数据库并不一定是一个已经存在的数据库,如果所选择的数据库不存在,则会新建一个数据库,所以在选择数据库的时候,注意一定要填上正确的数据库名

如果拼写错误的话,很有可能会新建一个数据库

复制代码 代码如下:

?php

$db = $connection-mybiglongdbname;

//做一些事情

$db = $connection-mybiglongdbnme;

//现在会连上一个新的数据库

?

获取一个集合

获取一个集合跟选择数据库拥有相同的语法格式

复制代码 代码如下:

?php

$db = $connection-baz;//选择数据库

$collection = $db-foobar;//选择foobar集合

//或者使用更简洁的方式

$collection = $connection-baz-foobar;

?

插入一个文档

多维数组是可以被储存到数据库中的基本单元

一个随机的文档可能是这样

复制代码 代码如下:

?php

$doc = array(

”name” = “MongoDB”,

“type” = “database”,

“count” = 1,

“info” = (object)array( “x” = 203,

“y” = 102),

“versions” = array(“0.9.7″, “0.9.8″, “0.9.9″)

);

?

注意:你可以嵌套数组与对象,对象与文档在mongodb中几乎是一样的,你可以使用$doc调用一个文档或对象,但是info字段总是一个对象而不是一个文档,

本约束适用于所有文档

使用MongoCollection::insert()插入一个文档

复制代码 代码如下:

?php

$m = new Mongo();

$collection = $m-foo-bar;

$collection-insert($doc);

?

mongodb 的 insert()、save() ,区别主要是:若存在主键,insert() 不做操作,而save() 则更改原来的内容为新内容。

存在数据: { _id : 1, ” name ” : ” n1 ” }

insert({ _id : 1, ” name ” : ” n2 ” }) 会提示错误

save({ _id : 1, ” name ” : ” n2 ” }) 会把 n1 改为 n2 。

使用MongoCollection::findOne()查询文档

为了证明上面那段代码的数据已经插入到数据库里了,我们进行简单的 findOne()操作以得到集合中的第一个文档数据,这种方法只返回一个文档数据,

这种方法适用于在你的查询语句的时候只匹配一个文档或者你只关心第一条数据

复制代码 代码如下:

?php

$obj = $collection-findOne();

var_dump( $obj );

?

你会看到下列结果

复制代码 代码如下:

array(5) {

[“_id”]=

object(MongoId)#6 (0) {

}

[“name”]

string(7) “MongoDB”

[“type”]=

string(8) “database”

[“count”]=

int(1)

[“info”]=

array (2) {

[“x”]=

int(203)

[“y”]=

int(102)

}

[“versions”]

array(3) {

[0]=

string(5) “0.9.7″

[1]=

string(5) “0.9.8″

[2]=

string(5) “0.9.9″

}

}

注意_id字段自动加载了文档上,MongoDB储存元素中以_以及$开头的都是供内部使用的

添加更多文档

为了做一些更有趣的事情,我们添加更多简单的文档到集合中,这些文档如下

复制代码 代码如下:

?php

array( “i” = value );

?

我们可以使用循环相当有效的插入数据

复制代码 代码如下:

?php

for($i=0; $i100; $i++) {

$collection-insert( array( “i” = $i ) );

}

?

注意:我们可以插入不同的字段在同一字符集中,在这方面意味着MongoDB拥有非常自由的储存模式

在一个集合中计算文档的数量

现在我们插入了101个文档(我们用循环插入了100个,之前还插入了一个),我们可以使用count()来看看我们的数据是不是都被插入进去了

复制代码 代码如下:

?php

echo $collection-count();

?

这段代码将打印出101

MongoCollection::count() 也可以查询字段数据

使用游标得到集合中的所有文档

为了得到集合中的所有文档,我们可以使用 MongoCollection::find()方法,find()方法返回一个 MongoCursor对象,可以让我们重复得到查询所匹配的的文档

复制代码 代码如下:

?php

$cursor = $collection-find();

foreach ($cursor as $id = $value) {

echo “$id: “;

var_dump( $value );

}

?

这样我们会打印出集合中的这101个文档,$id就是文档中的_id字段,$value 就是文档本身

为查询规定一个标准

我们可以通过find()方法得到集合中的文档子集,例如,我们要查询出集合中i字段为71的文档,我们可以使用下列方法

复制代码 代码如下:

?php

$query = array( “i” = 71 );

$cursor = $collection-find( $query );

while( $cursor-hasNext() ) {

var_dump( $cursor-getNext() );

}

?

我们将打印如下数据

复制代码 代码如下:

array(2) {

[“_id”]=

object(MongoId)#6 (0) {

}

[“i”]=

int(71)

[“_ns”]=

“testCollection”

}

为查询设定一个范围

我们可以通过find()创建一个查询语句以得集合中的一个子集,例如如果我们得到所有”i”50的文档,我们可以使用如下代码

复制代码 代码如下:

?php

$query = array( “i” = array(‘$gt’ =50)); //注意’$gt’两边的单引号

$cursor = $coll-find( $query );

while( $cursor-hasNext() ) {

var_dump( $cursor-getNext() );

}

?

我们同样可以得到20 i = 30之间的数据

复制代码 代码如下:

?php

$query = array( “i” = array( “\$gt” = 20, “\$lte” = 30 ) );

$cursor = $coll-find( $query );

while( $cursor-hasNext() ) {

var_dump( $cursor-getNext() );

}

?

我们非常容易漏掉$美元符号,你也可以选择你自定义的符号来代替美元符号,选择一个不会在你的建里面出现的符号例如”:”,在php.ini中加上这么一句话

复制代码 代码如下:

mongo.cmd = “:”

那么上面的代码就可以替换成

复制代码 代码如下:

?php

$query = array( “i” = array( “:gt” = 20, “:lte” = 30 ) );

?

当然你也可以使用ini_set(“mongo.cmd”, “:”)的方法来改变

创建一个索引

MongoDB支持索引,并且可以很容易的加到一个集合中,你只要指定某个字段为索引就行了,并且还可以指定 正序索引(1)与 倒序索引(-1)

下面的代码为I创建了索引

复制代码 代码如下:

?php

$coll-ensureIndex( array( “i” = 1 ) ); //在”i”上创建了一个索引

$coll-ensureIndex( array( “i” = -1, “j” = 1 ) );//在”i”上创建了倒序索引 在”j”上创建了正序索引

?

一个完整的简单例子

这个例子展示了如何链接mongodb数据库,如何选择数据库,如何插入数据,如何查询数据,以及关闭数据库链接

复制代码 代码如下:

?php

//链接

$m = new Mongo();

// 选择一个数据库

$db = $m-comedy;

$collection = $db-cartoons;

//添加一个元素

$obj = array( “title” = “Calvin and Hobbes”, “author” = “Bill Watterson” );

$collection-insert($obj);

//修改

$newdata = array(‘$set’ = array(“title” = “Calvin and Hobbes”));

$collection-update(array(“author” = “caleng”), $newdata);

//删除

$collection-remove(array(‘author’=’caleng’), array(“justOne” = true));

//添加另一个元素,使用不同的格式

$obj = array( “title” = “XKCD”, “online” = true );

$collection-insert($obj);

//查询所有的集合

$cursor = $collection-find();

//重复显示结果

foreach ($cursor as $obj) {

echo $obj[“title”] . “\n”;

}

// 关闭链接

$m-close();

?

输出结果为

复制代码 代码如下:

Calvin and Hobbes

XKCD

mongodb insert和save的相同点和区别

区别

若新增的数据中存在主键 ,insert() 会提示错误,而save()

则更改原来的内容为新内容。

如:

已存在数据: {_id : 1, ” name ” : ” n1 ” },再次进行插入操作时,

insert({_id : 1, ” name ” : ” n2 ” }) 会报主键重复的错误提示

save({ _id : 1, ” name ” : ” n2 ” }) 会把 n1 修改为 n2 。

相同点:

若新增的数据中没有主键时,会增加一条记录。

已存在数据: { _id : 1, ” name ” : ” n1 ” },再次进行插入操作时,

insert({ ” name ” : ” n2 ” }) 插入的数据因为没有主键,所以会增加一条数据

save({ ” name ” : ” n2 ” })

增加一条数据。

mongodb的save和insert函数的区别

                   

mongodb的save和insert函数都可以向collection里插入数据,但两者是有两个区别:

一、使用save函数里,如果原来的对象不存在,那他们都可以向collection里插入数据,如果已经存在,save会调用update更新里面的记录,而insert则会忽略操作

二、insert可以一次性插入一个列表,而不用遍历,效率高, save则需要遍历列表,一个个插入。

看下这两个函数的原型就清楚了,直接输入函数名便可以查看原型,下面标红的部分就是实现了循环,对于远程调用来说,是一性次将整个列表post过来让mongodb去自己处理,效率会高些

db.user.insert

function (obj, _allow_dot) {

    if (!obj) {

        throw “no object passed to insert!”;

    }

    if (!_allow_dot) {

        this._validateForStorage(obj);

    }

    if (typeof obj._id == “undefined” !Array.isArray(obj)) {

        var tmp = obj;

        obj = {_id:new ObjectId};

        for (var key in tmp) {

            obj[key] = tmp[key];

        }

    }

    this._db._initExtraInfo();

    this._mongo.insert(this._fullName, obj);

    this._lastID = obj._id;

    this._db._getExtraInfo(“Inserted”);

}

db.user.save

function (obj) {

    if (obj == null || typeof obj == “undefined”) {

        throw “can’t save a null”;

    }

    if (typeof obj == “number” || typeof obj == “string”) {

        throw “can’t save a number or string”;

    }

    if (typeof obj._id == “undefined”) {

        obj._id = new ObjectId;

        return this.insert(obj);

    } else {

        return this.update({_id:obj._id}, obj, true);

    }

}

下面是 python里的实现向mongo插入数据的代码

import pymong

logItems =[]

logItems.append({“url”:”,”time”:0.2})

logItems.append({“url”:”,”time”:0.12})

logItems.append({“url”:”,”time”:0.24})

def addLogToMongo(db,logItems):

     #建立一个到mongo数据库的连接

     con = pymongo.MongoClient(db,27017)

     #连接到指定数据库

     db = con.my_collection

#直接插入数据,logItems是一个列表变量,可以使用insert直接一次性向mongoDB插入整下列表,如果用save的话,需一使用for来循环一个个插入,效率不高

     db.logDetail.insert(logItems)

     ”’

      for url in logItems:

          print(str(url))

          db.logDetail.save(url)

     ”’

               

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/243126.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-12 12:54
下一篇 2024-12-12 12:54

相关推荐

  • Java 监控接口返回信息报错信息怎么处理

    本文将从多个方面对 Java 监控接口返回信息报错信息的处理方法进行详细的阐述,其中包括如何捕获异常、如何使用日志输出错误信息、以及如何通过异常处理机制解决报错问题等等。以下是详细…

    编程 2025-04-29
  • 使用Python爬虫获取电影信息的实现方法

    本文将介绍如何使用Python编写爬虫程序,来获取和处理电影数据。需要了解基本的Python编程语言知识,并使用BeautifulSoup库和Requests库进行爬取。 一、准备…

    编程 2025-04-28
  • Python爬取网页信息

    本文将从多个方面对Python爬取网页信息做详细的阐述。 一、爬虫介绍 爬虫是一种自动化程序,可以模拟人对网页进行访问获取信息的行为。通过编写代码,我们可以指定要获取的信息,将其从…

    编程 2025-04-28
  • 如何使用Python执行Shell命令并获取执行过程信息

    本文将介绍如何使用Python执行Shell命令并获取执行过程信息。我们将从以下几个方面进行阐述: 一、执行Shell命令 Python内置的subprocess模块可以方便地执行…

    编程 2025-04-28
  • Python实现身份信息模拟生成与查验

    本文将从以下几个方面对Python实现身份信息模拟生成与查验进行详细阐述: 一、身份信息生成 身份信息生成是指通过代码生成符合身份信息规范的虚假数据。Python中,我们可以使用f…

    编程 2025-04-27
  • Dapper使用getschema获取表信息

    本文旨在介绍Dapper中使用getschema获取表信息的方法和注意事项。 一、获取某张表的所有列信息 使用Dapper获取某张表信息,可以使用 `IDbConnection.G…

    编程 2025-04-27
  • 通过提交信息搜索-使用git

    本篇文章重点讲解如何使用git通过提交信息来搜索。我们将从多个方面介绍如何使用git来搜索提交信息,并提供相应的代码示例以供参考。 一、搜索方式 Git提供了三种搜索方式,分别为:…

    编程 2025-04-27
  • 已装备我军的空中信息化作战平台

    本文将会从多个方面详细阐述已装备我军的空中信息化作战平台。 一、平台概述 已装备我军的空中信息化作战平台是一个全新的作战系统,具备实时数据采集、处理、分析、共享的能力。它可以在不同…

    编程 2025-04-27
  • Linux查看系统信息

    一、CPU信息 Linux系统下,查看CPU的信息最常用的命令是lscpu。该命令可以显示CPU架构、核心数量、线程数、缓存大小、CPU频率等信息。例如: lscpu 该命令会输出…

    编程 2025-04-24
  • 软考 信息安全工程师

    软考 信息安全工程师是一项技能型国家级资格认证考试,主要测试考生在信息安全领域的理论知识和实践技能,是证明个人信息安全能力的重要证书。本文将从多个方面对软考 信息安全工程师做详细的…

    编程 2025-04-23

发表回复

登录后才能评论