标签: mongodb-php

MongoDB和CodeIgniter

任何人都可以帮助我指向一个教程,库等,这将允许我从CodeIgniter使用MongoDB吗?

php codeigniter mongodb mongodb-php

51
推荐指数
4
解决办法
5万
查看次数

Mongodb $推入嵌套数组

我想在嵌套数组中添加新数据

我的文件是:

{
  "username": "erkin",
  "email": "erkin-07@hotmail.com",
  "password": "b",
  "playlists": [
    {
      "_id": 58,
      "name": "asdsa",
      "date": "09-01-15",
      "musics": [
        {
          "name": "INNA - Cola Song (feat. J Balvin)",
          "duration": "3.00"
        },
        {
          "name": "blabla",
          "duration": "3.00"
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想在此播放列表部分添加音乐:

{
  "username": "erkin",
  "email": "erkin-07@hotmail.com",
  "password": "b",
  "playlists": [
    {
      "_id": 58,
      "name": "asdsa",
      "date": "09-01-15",
      "musics": [
        {
          "name": "INNA - Cola Song (feat. J Balvin)",
          "duration": "3.00"
        },
        {
          "name": "blabla",
          "duration": "3.00"
        },
        { …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-php

38
推荐指数
3
解决办法
3万
查看次数

Mongodb php获取新文件的ID?

创建文档:

$db->collection->insert($content);
// $newDocID = ???
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取新文档的ID.怎么样?谢谢.

php mongodb mongodb-php

35
推荐指数
3
解决办法
3万
查看次数

PHP + MongoDB:未捕获的异常'MongoCursorException',消息'没有这样的文件或目录'

我正在研究一个尝试从PHP连接到MongoDB数据库的Web应用程序.在90%的页面加载中一切正常,但在其他10%中,当我尝试更新集合时会抛出以下异常:

Fatal error: Uncaught exception 'MongoCursorException' with message 'No such file or directory' in D:\webDev\webSites\str\dev3\_global_classes\User.php:40
Stack trace:
#0 D:\webDev\webSites\str\dev3\_global_classes\User.php(40):
   MongoCollection->update(Array, Array, Array)
#1 D:\webDev\webSites\str\dev3\_init\_init.php(8):
   User->__construct(NULL)
#2 D:\webDev\webSites\str\dev3\index.php(3):
   include('D:\webDev\webSi...')
#3 {main} thrown in D:\webDev\webSites\str\dev3\_global_classes\User.php on line 40
Run Code Online (Sandbox Code Playgroud)

PHP代码:

public function __construct($SESSIONID = null) {        
    User::$_users_collection = Main::$_mongo->selectCollection("users");

     ...   

    $query = array('session_id' => session_id());

    $expiry = time() + Main::$_lifetime;
    $data = array(
        'session_id' => session_id(),
        'expiry' => (string)$expiry,
        'ip' => $_SERVER['REMOTE_ADDR']
    );

    $options = array(
        'upsert' => true,
        'safe' => true
    ); …
Run Code Online (Sandbox Code Playgroud)

php mongodb mongodb-php

29
推荐指数
1
解决办法
3577
查看次数

在mongoDB中查找具有ObjectID的文档

当我将一些文档插入集合(没有ObjectID)时,mongoDB添加了自己的ObjectID.

我想通过其唯一的ObjectID查询文档.

$db->collection_name->find(array('_id'=>'4e49fd8269fd873c0a000000')));
Run Code Online (Sandbox Code Playgroud)

它不能用于'4e49fd8269fd873c0a000000'前面的MongoID前缀或ObjectID.

使用PHP中的mongoDB通过ObjectID进行查询的正确方法是什么?

php mongodb mongodb-php

25
推荐指数
2
解决办法
3万
查看次数

PHP子类Magic __isset有效,但__get没有

我有一个抽象的父类Mongo_Document(来自mongodb-php-odm)和一个继承的类Model_ActionPlan. Mongo_Document具有与Mongo_Document类内部数组交互的magic __isset和__get方法.

我试图使用以下代码(从方法内部的代码片段Model_ActionPlan):

if (isset($this->status))
{
    if (($this->status === "closed") AND ($this->close_type != "failure"))
    {
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

(注意,close_type如果是,则保证设置status == 'closed'.)

isset调用返回true,然后继续执行下一条语句.在那里,我收到以下错误:

 Undefined property: Model_ActionPlan::$status
Run Code Online (Sandbox Code Playgroud)

但是,如果我替换$this->statusparent::__get('status'),则此代码按预期工作.请注意,在程序的其他任何地方,我都可以使用:

$ap = new Model_ActionPlan($plan_id);
echo $ap->status;
// Prints 'closed' (or 'active') as expected
Run Code Online (Sandbox Code Playgroud)

只有在这里,在课堂内部,这不起作用.

我环顾四周,似乎无法找到任何说明在子类中无法调用魔法的方法.我可以使用该parent::__get调用,但我认为这可能是错误的方法.有谁知道是否有正确/更好的方法来做到这一点?

更新了#1 2012-12-16: 父类的完整代码在Github上.

更新了#2 2012-12-18: 对于询问设置在何处或是否设置正确的人,答案是,由于调用parent::__get('status') 确实有效,问题显然不是变量没有设置.它__get()是从一个名为的私有instace变量中获取数据的 …

php inheritance magic-methods mongodb-php

25
推荐指数
1
解决办法
1627
查看次数

在mongodb php库中使用insertMany时如何忽略重复文件?

我正在使用mongo php库,并尝试将一些旧数据插入mongodb.我使用了insertMany()方法并传递了一大堆文档,这些文档可能在唯一索引上有重复的文档.

假设我有一个用户集合并拥有这些索引:

[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "test.users"
    },
    {
        "v" : 1,
        "unique" : true,
        "key" : {
            "email" : 1
        },
        "name" : "shop_id_1_title_1",
        "ns" : "test.users"
    }
]
Run Code Online (Sandbox Code Playgroud)

如果存在重复文档,MongoDB\Driver\Exception\BulkWriteException则会引发并停止该过程.我想找到一种方法来忽略插入重复文档(并防止引发异常)并继续插入其他文档.

我在php.net文档中找到了一个标志叫做continueOnError伎俩,但似乎它不能使用这个库.

来自php.net的例子:

<?php

$con = new Mongo;
$db = $con->demo;

$doc1 = array(
        '_id' => new MongoId('4cb4ab6d7addf98506010001'),
        'id' => 1,
        'desc' => "ONE",
);
$doc2 …
Run Code Online (Sandbox Code Playgroud)

php mongodb mongodb-php

18
推荐指数
1
解决办法
1万
查看次数

如何在PHP中将MongoDB BSONDocument转换为有效的JSON?

我正在使用MongoDB和PHP库.我使用PHP在MongoDB中插入了一个有效的JSON文档.我现在正在使用findOne检索文档,结果得到一个MongoDB\Model\BSONDocument对象.如何轻松取回我的JSON文档?是否有任何内置函数或我是否必须编写逻辑来将BSONDocument转换为JSON?

php json mongodb bson mongodb-php

14
推荐指数
3
解决办法
7755
查看次数

Mongo Map第一次减少

第一次在这里Map/Reduce用户,并使用MongoDB.我有很多页面访问数据,我想通过使用Map/Reduce来了解一些.下面基本上是我想要做的,但作为一个初学者Map/Reduce,我认为这超出了我的知识!

  1. 在过去30天内浏览所有访问过的页面,其中external = true.
  2. 然后为每个页面找到所有访问
  3. 通过推荐位置对所有访问进行分组
  4. 对于每个推荐位置,计算访问具有特定"类型"并且在"标签"中具有特定单词的页面的数量.

数据库和集合组织为

$mongo->dbname->visits
Run Code Online (Sandbox Code Playgroud)

示例文档是:

{"url": "www.example.com", "type": "a", "refer": {"external": true, "domain": "twitter.com", "url": "http://www.twitter.com/page"}, "page": "1235", "user": "1232", "time": 1234567890}
Run Code Online (Sandbox Code Playgroud)

然后我想找到带有特定标签的B类文件.

{"url": "www.example.com", "type": "b", "page": "745", "user": "1232", "time": 1234567890, "tags": {"a", "b", "c"}}
Run Code Online (Sandbox Code Playgroud)

我正在使用正常的Mongo PHP扩展,如果它有影响.

php mapreduce mongodb mongodb-php

12
推荐指数
1
解决办法
1万
查看次数

数字集合名称删除

如何从MongoDB中删除数字集合?

PRIMARY> db.123456789011.remove({});
Tue Mar 20 08:42:51 SyntaxError: missing ; before statement (shell):1

PRIMARY> db.123456789011.drop({});
Tue Mar 20 08:43:13 SyntaxError: missing ; before statement (shell):1
Run Code Online (Sandbox Code Playgroud)

是通过PHP脚本创建的..现在我无法弄清楚如何删除它..

思考?

谢谢

mongodb mongodb-php

11
推荐指数
2
解决办法
2万
查看次数