sdb的版本、php的驱动是10的
1.存储float值的时候数据精度
php 对象中的数据
array[/b] (size=22) 'ctime' => string '2015-04-09 15:10:22' (length=19) 'meid' => string '' (length=0) 'leid' => string '' (length=0) 'mename' => string '' (length=0) 'mecard' => string '' (length=0) 'memobile' => string '' (length=0) 'mepoint' => string '' (length=0) 'memoney' => string '' (length=0) 'menumber' => string '' (length=0) 'paymoney' => float 22222.222222 'realmoney' => float 22222.222222 'point' => float 0 'memo' => string '' (length=0) 'paytype' => string '1' (length=1) 'cashmoney' => float 22222.222222 'bankmoney' => float 0 'storemoney' => float 0 'paytimes' => float 0 'mtid' => string '142670BA9894E3A970596A51F5C741AD' (length=32) 'entid' => string '21CB3BADBD3291B583FD3B0244496229' (length=32) 'cuid' => string '009025134B17B06401FE5E95269312C5' (length=32) 'cname' => string 'ec' (length=2)
Sdb中存储的数据。
{
"_id": {
"$oid": "552625de99a6c7e9cf9f695f"
},
"ctime": "2015-04-09 15:10:22",
"meid": "",
"leid": "",
"mename": "",
"mecard": "",
"memobile": "",
"mepoint": "",
"memoney": "",
"menumber": "",
"paymoney": 22222.2,
"realmoney": 22222.2,
"point": 0,
"memo": "",
"paytype": "1",
"cashmoney": 22222.2,
"bankmoney": 0,
"storemoney": 0,
"paytimes": 0,
"mtid": "142670BA9894E3A970596A51F5C741AD",
"entid": "21CB3BADBD3291B583FD3B0244496229",
"cuid": "009025134B17B06401FE5E95269312C5",
"cname": "ec"
怎么数据会存储成这样了呢,我使用的时候发现他把所有的float都转换成了7位字符进行的存储。
2.数据查询
更新语句 {"$inc":{"money":1000,"number":1,point":1000}},这里的point少了一个双引号。
在sdb的存储新建了个字段 为 {"entid":"21CB3BADBD3291B583FD3B0244496229","point":0,"point\"":1000}
这个时候在sdb的shell里使用{"entid":"[/i]21CB3BADBD3291B583FD3B0244496229"}进行查询可以查询出这条数据。
但是在php中使用find进行查询是空的,但是count能得到记录数。
3.以上面1里的数据为例[/i]
"ctime": "2015-04-09 15:10:22",这里我在sdb中存储的使用的是字符串而非sdb的时间格式
我使用{ctime:{$gte:"[/i]2015-04-10 15:10:22[/i]"},[/i][/i]ctime:{$lte:"[/i]2015-04-1 15:10:22[/i]"}[/i][/i]}为条件进行查询。
也就所起始时间大于结束时间进行查询的。这个时候会出现如下cursor的错误。
[/i][/i]string ' SequoiaCursor is null' (length=23)