我将此函数存储在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) 我正试图从我的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而不是下载整个集合来做到这一点......
根据官方文件:
BSON ObjectID是一个12字节的值,包括一个4字节的时间戳(自纪元以来的秒数),一个3字节的机器ID,一个2字节的进程ID和一个3字节的计数器
但实际上它是一个24字节的值,如4d7f4787ac6d604009000000
为什么会这样?
在mongodb中使用geoNear时是否可以添加更多过滤器?例如,说我的记录如下所示:
{
_id: {},
cid: 1,
latlon: [ -74.07096147537231, 40.9088747684256 ]
}
Run Code Online (Sandbox Code Playgroud)
我可以传递"cid"以确保只有"cid"等于"1"的记录吗?如果geoNear不可能,我该怎么做?我正在使用geoNear因为它返回距离...
谢谢!
我只使用一个集合的mongo db并且消耗100%的平均cpu使用率,我如何限制其资源?
注意:我有核心2四核处理器,运行centos
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
我正在努力理解的一件事是,在设置我们当前的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)
这将连接到主..然而,这似乎并没有分配读取负载..我怎么能分配读取负载,以便它跨越两个服务器,从而使查询更快?
先感谢您
保存对象时,不允许"零长度键"出现致命错误.
是否由于__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
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时允许密码中的符号?
我已经看过这个帖子: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) mongodb-php ×10
mongodb ×9
php ×5
cpu-usage ×1
doctrine-orm ×1
json ×1
querying ×1
resources ×1
symfony ×1