我是MongoDB的新手,我正在尝试将SQL查询转换为MongoDB查询。但似乎无法找到任何方法将带有子查询的SQL查询转换为mongoDB。 例如:
SELECT article, dealer, price
FROM shop
WHERE price=(SELECT MAX(price) FROM shop);
我尝试了以下方法,但它似乎无法运作。
db.shop.group({
"initial": {},
"reduce": function(obj, prev) {
prev.maximumvalueprice = isNaN(prev.maximumvalueprice) ? obj.price :
Math.max(prev.maximumvalueprice, obj.price);
}}).forEach(
function(data){
db.shop.find({
"price": data
},
{
"article": 1,
"dealer": 1,
"price": 1
})
})
如何将此SQL查询转换为MongoDB查询?
答案 0 :(得分:0)
如果您使用的是MongoDB v.3.2或更新版本,则可以尝试使用TypeError: 'Word2Vec' object does not support item assignment
。
尝试使用聚合:
$lookup
; DESC
元素; tmpCollection
; tmpCollection
示例:
$tmpCollection
答案 1 :(得分:0)
在订购文档的 $first
管道阶段中,您似乎需要使用 $group
来完成此任务的聚合框架。订购集合中文档的初始管道步骤是 $sort
:
db.shop.aggregate([
{ "$sort": { "price": -1 } }, // <-- sort the documents first in descending order
{
"$group": {
"_id": null,
"article": { "$first": "$article" },
"dealer": { "$first": "$dealer" },
"price": { "$first": "$price" }
}
}
])
或使用 $last
db.shop.aggregate([
{ "$sort": { "price": 1 } }, // <-- note the sort direction
{
"$group": {
"_id": null,
"article": { "$last": "$article" },
"dealer": { "$last": "$dealer" },
"price": { "$last": "$price" }
}
}
])