我怎么能看到当字段在mongodb按字母顺序变化
How can I see when the field changes alphabetically in mongodb?
假设我的mongo中有一个文件,其中包含CARS集合中的这些文档。
我知道我可以用这个排序:db.cars.find().sort({car:1, price:-1})
所以我需要一个查询,把我带回每个字段的前1辆车。我想对这3个选项进行{$set:{"price_high"},{multi:true}}
,这样它们就有一个新的"price_high"字段,
'car':Chevy, 'price':100 //1 I need this one
'car':Chevy, 'price': 80 //2
'car':Chevy, 'price': 60 //3
'car':Lexus, 'price':99 //1 I need this one
'car':Lexus, 'price':90 //2
'car':Lexus, 'price':85 //3
'car':Maserati, 'price':99 //1 I need this one
'car':Maserati, 'price':96 //2
'car':Maserati, 'price':93 //3
MONGO终端查询不是进入文件,而是进入终端!!!!!! 作为您对MongoDB的介绍,您现在正在寻找的是.aggregate()
方法。这是MongoDB在SQL中做"GROUP BY"的方式,以及许多其他从原始形式操作数据的事情。
要获取结果并"更新"数据,您现在可以这样做(最好是批量):
var bulk = db.collection.initializeOrderedBulkOp(),
count = 0;
db.collection.aggregate([
// Sort as required
{ "$sort": { "car": 1, "price": -1 } },
// Group on the "first" entries per car
{ "$group": {
"_id": "$car",
"doc_id": { "$first": "$_id" },
"price": { "$first": "$price" }
}}
]).forEach(function(doc) {
bulk.find({ "_id": doc.doc_id }).updateOne({
"$set": { "price_high": true }
});
count++;
// Empty per 1000 processed and re-init
if ( count % 1000 == 0 ) {
bulk.execute();
bulk = db.collection.initializeOrderedBulkOp();
}
});
// Clear any remaining
if ( count % 1000 != 0 )
bulk.execute();
当然,你总是可以取出三个_id
值(或多少),并在你的更新中使用$in
和{multi:true}
,而不是你相信你的真实样本足够小。
但是这里的基本情况是使用.aggregate()
来获取那些"顶级文档"( $first
在 $sort
是这里的关键),然后做任何你必须做的事情来更新你从那里得到的结果。
您可以使用组聚合函数如下:
db.cars.aggregate(
[
{$group:
{
"_id": "$car",
"price":{"$max":"$price"},
"gid":{"$first":"$_id"}
}
}
]
).forEach(function(doc)
{
db.cars.update({"_id":doc.gid,"car":doc._id,"price":doc.price},
{"$set":{"price_high" : true}});
}
相关文章:
- ajax请求的顺序总是不同的
- 按照选项卡索引的顺序循环一个jQuery选择
- 单击页面上的链接后高度发生变化
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 按顺序添加和删除类
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript-根据赋值顺序,按键合并对象数组
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- querySelector/getElementByClassName嵌套项的顺序
- React redux初始化功能,无论状态变化如何
- 角度ng变化或ng点击选择can'不起作用
- 每个选择器的Jquery css颜色都在变化,但字体大小却没有变化
- 以不同的顺序输出数据
- 重新排列HTML元素的顺序并更改内容
- 如何选择多选的所有选项,顺序不应变化
- Wicket 6.19在替换Wicket 's ajax js文件后,导入顺序发生变化
- 当弹性框宽度发生变化时,更改弹性项目的顺序
- 每次加载到角砌石中的图像顺序都会发生变化
- 如何将不断变化的顺序输出修改为随机输出
- 我怎么能看到当字段在mongodb按字母顺序变化