我的文件中有以下结构:
{
"_id" : 1,
"item" : {
"name" : "abc",
"price" : 10,
"quantity" : 2,
"date" : ISODate("2014-03-01T08:00:00Z")
}
}
我想转换每个文件:
{
"_id" : 1,
"name" : "abc",
"price" : 10,
"quantity" : 2,
"date" : ISODate("2014-03-01T08:00:00Z")
}
换句话说,删除嵌入的文档,但不删除详细信息!
谢谢!
答案 0 :(得分:5)
您可以使用aggregation
,尤其是$project
运算符。 $out
运算符允许您将结果写入另一个集合。
db.collection.aggregate([
{ "$project": {
"_id": "$_id",
"name": "$item.name",
"price": "$item.price",
"quantity": "$item.quantity",
"date": "$item.date"}
},
{ "$out": "collection"}
])
您的文档现在看起来像这样:
{
"_id" : 1,
"name" : "abc",
"price" : 10,
"quantity" : 2,
"date" : ISODate("2014-03-01T08:00:00Z")
}
您也可以覆盖预先存在的集合,方法是为新结果集提供相同的名称,但是这样。