我的数据库中有一个学生集合,如下所示。
Mongodb 学生收藏:
{
name : 'Rahul',
age : '15'
}
{
name : 'Ajay',
age : '25'
}
{
name : 'Pinku',
age : '43'
}
{
name : 'Vinod',
age : '30'
}
Run Code Online (Sandbox Code Playgroud)
在为上述学生调用外部系统后,我得到了一组数据。
[
{'name':'Ajay','marks':20},
{'name':'Pinku','marks':12},
{'name':'Vinod','marks':50},
{'name':'Rahul','marks':80}
]
Run Code Online (Sandbox Code Playgroud)
我的任务是更新学生集合记录,并添加匹配学生的分数。有没有一种方法可以在一次 dml 操作中完成此操作,而不是循环遍历每个学生文档并用标记更新它。
输出应该是: Mongod Student Collection :
{
name : 'Rahul',
age : '15',
marks : 80
}
{
name : 'Ajay',
age : '25',
marks : 20
}
{
name : 'Pinku',
age : '43',
marks …Run Code Online (Sandbox Code Playgroud) 我有一个集合,其中文档具有XXX-XXX-XXXX这种格式的“电话”字符串字段。但是有些电话号码格式不同,因此我们想找出具有不同电话格式的文档。MongoDB查询以查找电话号码不是XXX-XXX-XXXX格式的文档。
我需要从Employees系列中找到mongodb中的第n个最高薪水.如果有人可以想到在mongodb中应用连接的想法,也会非常有用.
对于在美国发行且matos.viewer. rating 大于或等于3 的电影,计算一个名为num_favs 的新字段,该字段表示电影的演员字段中出现的最爱数量。
我不知道如何进一步进行,你能帮忙吗
favorites =
["Sandra Bullock",
"Tom Hanks",
"Julia Roberts",
"Kevin Spacey",
"George Clooney"]
db.movies.aggregate([
{ $match:{
'tomatoes.viewer.rating':{$gte:3},
"countries":"USA"
}
}
]).
Run Code Online (Sandbox Code Playgroud) 这已经困扰了我一段时间了.MongoDB 的聚合框架是一个很好的工具,通常比.mapReduce()大多数情况更适合使用,除非后者实际上更适合.
当然,与JavaScript解释相比,它实际上使用本机C++编译中实现的方法来执行它的操作,因此在大多数情况下比mapReduce替代方案"更快".
但这里的主要问题是"结果中'反转'关键顺序的含义是什么?".至少在最后几个主要版本的情况下,如果情况并非总是这样(不是真的在这里测试每个版本,在写作时只考虑2.6.x和3.x候选版本).但它始终处于"反向"状态,这看起来非常直观,因为我将在一个例子中给出.
将基本集合视为一个简单的例子:
db.example.insert([
{ "field": "A", "value": 1 },
{ "field": "A", "value": 2 },
{ "field": "B", "value": 3 },
{ "field": "B", "value": 4 },
{ "field": "C", "value": 5 },
{ "field": "C", "value": 6 }
])
Run Code Online (Sandbox Code Playgroud)
一旦该集合到位,当您想要运行如下样本聚合操作时:
db.example.aggregate([
{ "$group": {
"_id": "$field",
"value": { "$sum": "$value" }
}}
])
Run Code Online (Sandbox Code Playgroud)
然后返回的结果总是会像这样神秘地返回:
[
{ "_id" : "C", "value" : 11 },
{ "_id" : "B", "value" : 7 },
{ …Run Code Online (Sandbox Code Playgroud)