【发布时间】:2014-02-22 02:46:17
【问题描述】:
我有一个包含这样的对象的集合:
{
"_id": ObjectId("52ed12c144aecc4bf004d0b6"),
"title": "myBook",
"summary": "This is a book summary",
"covers": [
"http://url.com/cover1.jpg",
"http://url.com/cover2.jpg",
],
"urls": [
"http://url.com/myBook",
"http://url.com/myBook/option2"
],
"genres": [
"comedy",
"romantic"
],
"created_at": ISODate("2012-12-17T23:00:00Z"),
"modify_at": ISODate("2014-02-01T15:41:48.149Z")
}
但我只想从 covers 和 urls 属性中获取第一个值,我的输出 json 应该是这样的:
{
"_id": ObjectId("52ed12c144aecc4bf004d0b6"),
"title": "myBook",
"summary": "This is a book summary",
"covers": "http://url.com/cover1.jpg",
"urls": "http://url.com/myBook"
"genres": [
"comedy",
"romantic"
],
"created_at": ISODate("2012-12-17T23:00:00Z"),
"modify_at": ISODate("2014-02-01T15:41:48.149Z")
}
我想我必须使用 map_reduce,但我不确定我应该如何查询,我试过了:
db.books.mapReduce( function(){ emit(this._id, this.covers); }, function(key, values){ return values[0]; }, { out: "map_reduce_covers" } )
但这似乎行不通。
【问题讨论】: