任何人都可以帮助我指向一个教程,库等,这将允许我从CodeIgniter使用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) 创建文档:
$db->collection->insert($content);
// $newDocID = ???
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取新文档的ID.怎么样?谢谢.
我正在研究一个尝试从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) 当我将一些文档插入集合(没有ObjectID)时,mongoDB添加了自己的ObjectID.
我想通过其唯一的ObjectID查询文档.
$db->collection_name->find(array('_id'=>'4e49fd8269fd873c0a000000')));
Run Code Online (Sandbox Code Playgroud)
它不能用于'4e49fd8269fd873c0a000000'前面的MongoID前缀或ObjectID.
使用PHP中的mongoDB通过ObjectID进行查询的正确方法是什么?
我有一个抽象的父类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->status为parent::__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变量中获取数据的 …
我正在使用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) 我正在使用MongoDB和PHP库.我使用PHP在MongoDB中插入了一个有效的JSON文档.我现在正在使用findOne检索文档,结果得到一个MongoDB\Model\BSONDocument对象.如何轻松取回我的JSON文档?是否有任何内置函数或我是否必须编写逻辑来将BSONDocument转换为JSON?
第一次在这里Map/Reduce用户,并使用MongoDB.我有很多页面访问数据,我想通过使用Map/Reduce来了解一些.下面基本上是我想要做的,但作为一个初学者Map/Reduce,我认为这超出了我的知识!
数据库和集合组织为
$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扩展,如果它有影响.
如何从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脚本创建的..现在我无法弄清楚如何删除它..
思考?
谢谢