MongoDB Assignment Help | Practice Set 1

In this we will provide the some MongoDB queries and their solution, you need to practice it itself and comment in below section to send different solution from own side.
Check or download Dataset(Assgcars.json) from here.

Here the queries solution using nodejs:
First need to connect mongodb using below MongoClient
const MongoClient = require("mongodb").MongoClient;
//update the connection string.
const url = "mongodb://localhost/mongo-task";
//update database name
const dbName = "mongo-task";
//update collection name (i.e targetted collection)
const collectionName = "cars";
/*Query results are logged on the terminal.*/Query 1(e)
//Query 1
numberOfColoursByManufacturer = async () => {
const client = await MongoClient.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true,
}).catch((err) => console.log("Could not connect to MongoDB", err));
try {
const db = client.db(dbName);
const collection = db.collection(collectionName);
let res = await collection
.aggregate([
{
$unwind: "$Colour",
},
{
$group: {
_id: "$Manufacturer",
Colours: { $addToSet: "$Colour" },
},
},
{
$project: {
_id: 0,
Manufacturer: "$_id",
CountOfColours: { $size: "$Colours" },
},
},
])
.toArray();
console.log(res);
} catch (err) {
console.log("Error occured in First Query");
} finally {
client.close();
}
};Query 2(f)
//Query 2
extrasByManufacturer = async () => {
const client = await MongoClient.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true,
}).catch((err) => console.log("Could not connect to MongoDB", err));
try {
const db = client.db(dbName);
const collection = db.collection(collectionName);
let res = await collection
.aggregate([
{
$unwind: "$Extras",
},
{
$group: {
_id: "$Manufacturer",
Extras: { $addToSet: "$Extras" },
},
},
{
$project: {
_id: 0,
Manufacturer: "$_id",
Extras: "$Extras",
},
},
])
.toArray();
console.log(res);
} catch (err) {
console.log("Error in Sec Query", err);
} finally {
client.close();
}
};
Query 3(g)
//Query 3
countNumberOfExtras = async () => {
const client = await MongoClient.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true,
}).catch((err) => console.log("Could not connect to MongoDB", err));
try {
const db = client.db(dbName);
const collection = db.collection(collectionName);
let res = await collection
.aggregate([
{
$group: {
_id: "$Model",
Extras: { $push: "$Extras" },
Avg: { $avg: { $size: "$Extras" } },
},
},
{
$project: {
_id: 0,
Model: "$_id",
CountOfExtras: {
$size: {
$reduce: {
input: "$Extras",
initialValue: [],
in: { $setUnion: ["$$value", "$$this"] },
},
},
},
Avg: "$Avg",
},
},
])
.toArray();
console.log(res);
} catch (err) {
console.log("Error in Third Query", err);
} finally {
client.close();
}
};Query 4(h)
//Query 4
lowestValPerManufacturer = async () => {
const client = await MongoClient.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true,
}).catch((err) => console.log("Could not connect to MongoDB", err));
try {
const db = client.db(dbName);
const collection = db.collection(collectionName);
const res = await collection
.aggregate([
{
$group: {
_id: "$Manufacturer",
price: {
$min: {
$add: ["$Price", "$Milage"],
},
},
},
},
{
$project: {
_id: 0,
Manufacturer: "$_id",
LowestPrice: "$price",
},
},
])
.toArray();
console.log(res);
} catch (err) {
console.log("Error in Fourth Query", err);
} finally {
client.close();
}
};
// To execute one query comment the others.
async function run() {
await numberOfColoursByManufacturer();
//await extrasByManufacturer();
//await countNumberOfExtras();
//await lowestValPerManufacturer();
}
run();



ggo888.bet có kiểu trình bày khá hợp mắt mình, đơn giản chứ không cố nhét thật nhiều thứ ra trước mặt. Với mấy trang nhiều nội dung, mình hay nhìn cách sắp xếp trước, thấy rối quá là cũng ngại đọc tiếp. Bố cục ở đây tạo cảm giác dễ theo dõi, nhìn qua đã phân biệt được từng phần mà không phải dò từng dòng chữ. Mình thích nhất là các chuyên mục có chỗ riêng, không bị lẫn thành một khối dài nhìn mãi chẳng biết bắt đầu từ đâu. Nói vậy thôi chứ mình chỉ đang nhận xét phần nhìn, còn những thứ khác thì chưa có gì để bàn. Riêng giao diện tối giản và cách…
Kết quả bóng đá là thứ mình hay nghía mỗi khi không xem được trận, nên bữa trước mình vào thử xem trang họ trình bày ra sao. Mình không có đọc hết bài dài đâu, chủ yếu lướt để coi phần tỷ số có dễ nhìn không. Thấy ổn phết: trận vừa xong là hiện ngay tỉ số với danh sách ghi bàn, kèm vài thông số cơ bản kiểu thẻ với phạt góc nên khỏi phải mở thêm chỗ khác. Mình hay theo dõi Ngoại hạng Anh nên tìm mục đó cũng nhanh, bấm cái là ra từng trận theo vòng, nhìn phát hiểu luôn. Điểm mình thích là chữ rõ, bảng số liệu canh thẳng hàng, kéo…
Socolive mình thấy bạn bè nhắc nên tiện tay vào thử cho biết thôi. Không phải kiểu ngồi đọc kỹ nội dung đâu, mình chỉ lướt xem giao diện có dễ chịu không. Vào cái là thấy trang nhìn khá thoáng, chữ không bị dồn dập nên mắt đỡ mệt. Mình thích cách họ chia thông tin thành từng khối rõ ràng, nhìn một cái là biết đang ở phần nào, không phải kéo lên kéo xuống đoán. Menu cũng đặt chỗ dễ thấy nên chuyển qua lại khá nhanh, cảm giác không bị “lạc” khi mới mở lần đầu. Nói chung mình chỉ cần vậy là đủ để dùng thoải mái, nhất là mấy bảng cột trình bày gọn…
EA88 mình mới ghé thử vì thấy mọi người nhắc hoài, chủ yếu vào xem giao diện ra sao chứ chưa kịp chơi gì. Ấn tượng đầu là trang bố cục khá sáng sủa, kiểu chia nội dung theo từng khối nên lướt xuống không bị rối mắt, mấy tiêu đề nhìn phát là hiểu đang nói phần nào. Mình có đọc lướt đoạn họ giải thích chuyện link vào hay bị chặn ở Việt Nam và cách xử lý, thấy viết ngắn gọn nên cũng dễ nắm. Menu đặt ngay trên cùng, bấm qua lại các mục khá nhanh, không phải mò nhiều. Nói chung cảm giác như họ chăm chút phần trình bày, nhất là mấy hộp thông…
GO8 tối qua lúc canh giờ nghỉ mình ghé thử vài phút cho biết. Mình vốn sợ mấy trang kiểu này hay trình bày lan man, ai dè vào thấy bố cục chia theo từng khối nội dung rõ ràng nên đọc lướt vẫn nắm được ý, đặc biệt đoạn giới thiệu họ ghi nền tảng phát triển từ năm 2020 và có nhắc chuyện đăng ký hợp pháp ở Virgin nên cảm giác thông tin “có nguồn có gốc” hơn. Kéo xuống từng phần thấy tiêu đề tách bạch, chữ không bị dồn một cục, nhìn kiểu có hộp nội dung nên mắt đỡ mỏi; menu điều hướng để ngay chỗ dễ thấy, bấm qua lại cũng khá mượt…