标签: mongodb-php

从PHP调用MongoDB中存储的JavaScript函数

我将此函数存储在db.system.js中

function SomeFunc(o) {
    x = db.Collection;
    while( 1 ) {
        var c = x.find({},{_id:1}).sort({_id:-1}).limit(1);
        var i = c.hasNext() ? c.next()._id + 1 : 1;
        o._id = i;
        x.insert(o);
        var err = db.getLastErrorObj();
        if( err && err.code ) {
            if( err.code == 11000 /* dup key */ )
                continue;
            else
                print("unexpected error inserting data: " + tojson(err));
        }
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

在PHP中

print_r(
    $db->execute("SumeFunc(o)", array("name" => "test"))
);
Run Code Online (Sandbox Code Playgroud)

错误

Array
(
    [errno] => -3
    [errmsg] => invoke failed: JS Error: …
Run Code Online (Sandbox Code Playgroud)

php mongodb java-stored-procedures mongodb-php

3
推荐指数
1
解决办法
2959
查看次数

mongodb php获取字段唯一值

我正试图从我的mongodb集合中的'type'字段中获取一个唯一值列表.以下示例文档:

{
       "_id" : ...,
       "type" : "report",
       "tasks" : ...
}
{
       "_id" : ...,
       "type" : "research",
       "tasks" : ...
}
{
       "_id" : ...,
       "type" : "memo",
       "tasks" : ...
}
{
       "_id" : ...,
       "type" : "memo",
       "tasks" : ...
}
{
       "_id" : ...,
       "type" : "report",
       "tasks" : ...
}
{
       "_id" : ...,
       "type" : "report",
       "tasks" : ...
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找按频率排序的文档类型字段中的唯一类型,因此:

["report", "memo", "research"]
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?希望我可以通过查询mongo而不是下载整个集合来做到这一点......

php querying mongodb mongodb-php

3
推荐指数
1
解决办法
6082
查看次数

为什么MongoId不是12字节长而是24字节?

根据官方文件:

BSON ObjectID是一个12字节的值,包括一个4字节的时间戳(自纪元以来的秒数),一个3字节的机器ID,一个2字节的进程ID和一个3字节的计数器

但实际上它是一个24字节的值,如4d7f4787ac6d604009000000

为什么会这样?

php mongodb mongodb-php

3
推荐指数
1
解决办法
390
查看次数

mongodb geoNear +额外的过滤器?

在mongodb中使用geoNear时是否可以添加更多过滤器?例如,说我的记录如下所示:

{
 _id: {},
 cid: 1,
 latlon: [ -74.07096147537231, 40.9088747684256 ]
}
Run Code Online (Sandbox Code Playgroud)

我可以传递"cid"以确保只有"cid"等于"1"的记录吗?如果geoNear不可能,我该怎么做?我正在使用geoNear因为它返回距离...

谢谢!

mongodb mongodb-php

3
推荐指数
1
解决办法
3874
查看次数

是否有任何限制mongodb CPU使用?

我只使用一个集合的mongo db并且消耗100%的平均cpu使用率,我如何限制其资源?

注意:我有核心2四核处理器,运行centos

resources cpu-usage mongodb mongodb-php

3
推荐指数
1
解决办法
2626
查看次数

Doctrine2 Mongodb添加更多$或运算符

doctrine2 ODM可以创建以下查询吗?

db.Product.find({ "$or": [ { "name": new RegExp("test*", "i") }, { "tags": new RegExp("public true*", "i") } ], "$or": [{ "public": false, "_id": { "$in": [ ObjectId("4e74121c4fcfa9ff7ac90000"), ObjectId("4e74121c4fcfa9ff7ac80000") ] } }, { "public": true }] });
Run Code Online (Sandbox Code Playgroud)

这里与doctrine2的主要问题我不明白如何在$查询中添加额外$或?

这有助于我使用$和运算符仍然缺失.

我目前正在使用Symfony2 Doctrine2 Mongodb

mongodb symfony doctrine-orm mongodb-php

3
推荐指数
1
解决办法
2592
查看次数

何时查询Mongo DB的副本集

我正在努力理解的一件事是,在设置我们当前的Mongo配置时,我们目前有两台带有仲裁器的服务器.

现在我先创建一个关于主人的记录; 去了二级,然后试图找到它,我收到的错误看起来像:

error: { "$err" : "not master and slaveok=false", "code" : 13435 }
Run Code Online (Sandbox Code Playgroud)

在mongo的网站上阅读Slave OK后,我发现在我需要设置的辅助服务器上

rs.slaveOk();
Run Code Online (Sandbox Code Playgroud)

但是我不完全理解为什么在查询服务器时我会在PHP中执行此操作; 或者如果我错误地理解这一点.

基本上我有一个服务器池,我打算连接到它们:

$m = new Mongo("mongodb://localhost:27017", array("replicaSet" => "myReplSetName"));?>
Run Code Online (Sandbox Code Playgroud)

这将连接到主..然而,这似乎并没有分配读取负载..我怎么能分配读取负载,以便它跨越两个服务器,从而使查询更快?

先感谢您

php mongodb mongodb-php

3
推荐指数
1
解决办法
4790
查看次数

无法在mongodb中保存PHP对象

保存对象时,不允许"零长度键"出现致命错误.

是否由于__construct()的存在?

我相信在save()方法中允许使用PHP对象.

class Address{
    private $name;
    private $company;
    private $zip;

    public function __construct($name,$company,$zip){
        $this->name = $name;
        $this->company = $company;
        $this->zip = $zip;
    }
}

$newAddress = new Address("james","google",678);

print_r($newAddress);
// Address Object ( [name:Address:private] => james [company:Address:private] =>
// google [zip:Address:private] => 678 )

$addresses->save($newAddress);    
Run Code Online (Sandbox Code Playgroud)

致命错误:不允许使用带有"零长度密钥"消息的未捕获异常"MongoException",您是否使用带双引号的$?在/var/www/html/index.php:105堆栈跟踪:#0 /var/www/html/index.php(105):MongoCollection-> save(对象(地址))#1 {main}抛出/第105行的var/www/html/index.php

mongodb mongodb-php

3
推荐指数
1
解决办法
3495
查看次数

MongoClient,用密码连接'@'

我一直在尝试使用MongoDb,当我运行脚本进行连接时,它不能,因为密码使用了@符号.

连接到MongoDb

mongodb://username:password@localhost

但由于我连接到MongoDb的密码使用@符号,因此符号无法连接@.

例如;

new MongoClient("mongodb://mongo:p@assword@localhost);

将抛出以下错误;

PHP Fatal error: Uncaught exception 'MongoConnectionException' with message 'Failed to connect to: assword!@localhost:27017: Couldn't get host info for assword!@localhost'

如您所见,它认为@密码中的第一个是密码和主机的分隔符.

有没有办法连接,并@在使用MongoClient时允许密码中的符号?

mongodb-php

3
推荐指数
1
解决办法
6014
查看次数

使用Mongo中的PHP解码JSON

我已经看过这个帖子:PHP解码嵌套的JSON并且没有设法用它来解决我的问题.

我目前正在从Mongo抓取一个JSON对象,我遇到了从嵌套对象中获取信息的问题.

{
"adminLevel" : 200,
    "chat" : true,
    "clans" : [
            BinData(0,"wcXHR577OVBXfy9JwEf5gQAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
    ],
    "experience" : NumberLong(70003),
    "kitNew" : {
            "converted" : true,
            "items" : {
                    "ak47" : {
                            "killCount" : 5,
                            "selected" : false,
                            "unlocked" : 1
                    },
                    "hub-knife" : {
                            "selected" : false
                    },
                    "assault" : {
                            "selected" : false,
                            "unlocked" : 1
                    },
                    "pistol" : {
                            "deathWhileSelectedCount" : 3,
                            "killedBySelectedCount" : 1,
                            "killWhileSelectedCount" : 1,
                            "selected" : false,
                            "unlocked" : 1
                    },

                    "m1014" : { …
Run Code Online (Sandbox Code Playgroud)

php json mongodb mongodb-php

3
推荐指数
1
解决办法
2369
查看次数