【发布时间】:2011-12-27 02:16:42
【问题描述】:
使用下一个 bash 脚本创建数据库:
#! /bin/bash
curl -X PUT http://127.0.0.1:5984/sales
IFS=$';'
vals=`cat sales_upload.json`
for i in $vals
do
curl -X POST http://127.0.0.1:5984/sales -H "Content-Type: application/json" -d $i
done
unset IFS
和资源文件:
{
"Type" : "customer",
"LastName" : "Welsh",
"FirstName" : "Jim",
"Address" : "340 West 50th Street, New York, NY",
"TotalSpent" : 734.34
};
{
"Type" : "customer",
"LastName" : "Zuch",
"FirstName" : "Bo",
"Address" : "116 10th Avenue, New York, NY",
"TotalSpent" : 1102.47
};
{
"Type" : "customer",
"LastName" : "Libby",
"FirstName" : "Joe",
"Address" : "611 Fifth Avenue, New York, NY",
"TotalSpent" : 290.01
};
{
"Type" : "customer",
"LastName" : "Grant",
"FirstName" : "Sue",
"Address" : "7 West 55th Street, Manhattan, NY",
"TotalSpent" : 430.83
};
{
"Type" : "salesman",
"LastName" : "Green",
"FirstName" : "Gwen",
"Level" : 1
};
{
"_id" : "_design/logic",
"language" : "javascript",
"views" :
{
"customers": {
"map" : "function(doc) { if (doc.Type == 'customer') emit(null, {LastName: doc.LastName, FirstName: doc.FirstName, Address: doc.Address}) }"
},
"total_purchases": {
"map" : "function(doc) { if (doc.Type == 'customer') emit(null, doc.TotalSpent) }",
"reduce" : "function(keys, values) { return sum(values) }"
}
}
}
当我打电话时 curl -X GET http://127.0.0.1:5984/sales/_design/logic/_view/total_purchases
我明白了:
{"rows":[ {"key":null,"value":2557.65} ]}
但是如果我在 total_purchases 中将 emit 的第一个参数更改为 emit(doc.LastName, doc.TotalSpent),那么我会得到:
{"rows":[ {"key":null,"value":2557.6499999999996} ]}
为什么会这样?
【问题讨论】: