SQL
	
		
		
								
				
																				
							
								
				
								
				
																				
							
			
	
		
			Помогите пожайлуста перевести из SQL в MongoDB
SELECT Students.Firstname, Students.Lastname FROM School INNER JOIN Students ON School.StudentID = Students.StudentID WHERE Students.Gender='F'
	
	
	db.School.aggregate([ 
{
$lookup:
{
from: "Students",
localField: "StudentID",
foreignField: "StudentID",
as: "student_info"
}
},
{
$unwind: "$student_info"
},
{
$match: {"student_info.Gender": "F"}
},
{
$project:
{
"Firstname": "$student_info.Firstname",
"Lastname": "$student_info.Lastname"
}
}
])
				
									{
$lookup:
{
from: "Students",
localField: "StudentID",
foreignField: "StudentID",
as: "student_info"
}
},
{
$unwind: "$student_info"
},
{
$match: {"student_info.Gender": "F"}
},
{
$project:
{
"Firstname": "$student_info.Firstname",
"Lastname": "$student_info.Lastname"
}
}
])
								
									Владимир Vladimir								
								Спасибо!							
											В MongoDB запрос на выборку данных будет выглядеть следующим образом:
 
$lookup - присоединяет к коллекции School коллекцию Students, используя поле StudentID в обеих коллекциях.
$unwind - раскрывает массив students, полученный после присоединения коллекции Students.
$match - фильтрует только те документы, где Gender равен 'F'.
$project - выбирает поля Firstname и Lastname из students и убирает поле _id из результирующих документов.
Если вы используете библиотеку MongoDB для Python, то код для выполнения этого запроса может выглядеть примерно так:
				
							 db.School.aggregate([ 
  { 
    $lookup: { 
      from: "Students", 
      localField: "StudentID", 
      foreignField: "StudentID", 
      as: "students" 
    } 
  }, 
  { 
    $unwind: "$students" 
  }, 
  { 
    $match: { 
      "students.Gender": "F" 
    } 
  }, 
  { 
    $project: { 
      "students.Firstname": 1, 
      "students.Lastname": 1, 
      _id: 0 
    } 
  } 
]) 
 Этот запрос состоит из нескольких этапов: $lookup - присоединяет к коллекции School коллекцию Students, используя поле StudentID в обеих коллекциях.
$unwind - раскрывает массив students, полученный после присоединения коллекции Students.
$match - фильтрует только те документы, где Gender равен 'F'.
$project - выбирает поля Firstname и Lastname из students и убирает поле _id из результирующих документов.
Если вы используете библиотеку MongoDB для Python, то код для выполнения этого запроса может выглядеть примерно так:
 from pymongo import MongoClient 
 
client = MongoClient('mongodb://localhost:27017/') 
db = client['mydatabase'] 
 
result = db.School.aggregate([ 
  { 
    '$lookup': { 
      'from': 'Students', 
      'localField': 'StudentID', 
      'foreignField': 'StudentID', 
      'as': 'students' 
    } 
  }, 
  { 
    '$unwind': '$students' 
  }, 
  { 
    '$match': { 
      'students.Gender': 'F' 
    } 
  }, 
  { 
    '$project': { 
      'students.Firstname': 1, 
      'students.Lastname': 1, 
      '_id': 0 
    } 
  } 
]) 
 
for doc in result: 
  print(doc) 
 Если вы хотите перевести из SQL в MongoDB, то вам нужно знать не только синтаксис, но и логику обоих языков. Например, в SQL вы можете выбрать имена и фамилии студенток из школы с помощью внутреннего соединения таблиц. А в MongoDB вы должны использовать агрегацию и фильтрацию документов. Вот как это выглядит: 
 
db.School.aggregate([
{$lookup: {
from: "Students",
localField: "StudentID",
foreignField: "StudentID",
as: "students"
}},
{$unwind: "$students"},
{$match: {"students.Gender": "F"}},
{$project: {
_id: 0,
Firstname: "$students.Firstname",
Lastname: "$students.Lastname"
}}
])
 
Но не думайте, что это все. Есть еще много тонкостей и различий между SQL и MongoDB, которые могут вас запутать или удивить. Например, вы знаете, что в MongoDB можно хранить массивы и объекты внутри документов? Или что в SQL можно использовать подзапросы и оконные функции? Или что в MongoDB есть оператор $lookup, который позволяет делать левые соединения? Или что в SQL есть оператор LIKE, который позволяет искать по шаблону? Или что в MongoDB есть оператор $regex, который позволяет использовать регулярные выражения? Или что в SQL есть оператор BETWEEN, который позволяет выбирать по диапазону? Или что в MongoDB есть оператор $elemMatch, который позволяет фильтровать по элементам массива? Или что в SQL есть оператор IN, который позволяет выбирать по списку значений? Или что в MongoDB есть оператор $in, который делает то же самое?
 
Ну, вы поняли. Перевод из SQL в MongoDB - это не просто замена слов на другие слова. Это целый процесс изучения и адаптации к новой парадигме работы с данными.
				
									db.School.aggregate([
{$lookup: {
from: "Students",
localField: "StudentID",
foreignField: "StudentID",
as: "students"
}},
{$unwind: "$students"},
{$match: {"students.Gender": "F"}},
{$project: {
_id: 0,
Firstname: "$students.Firstname",
Lastname: "$students.Lastname"
}}
])
Но не думайте, что это все. Есть еще много тонкостей и различий между SQL и MongoDB, которые могут вас запутать или удивить. Например, вы знаете, что в MongoDB можно хранить массивы и объекты внутри документов? Или что в SQL можно использовать подзапросы и оконные функции? Или что в MongoDB есть оператор $lookup, который позволяет делать левые соединения? Или что в SQL есть оператор LIKE, который позволяет искать по шаблону? Или что в MongoDB есть оператор $regex, который позволяет использовать регулярные выражения? Или что в SQL есть оператор BETWEEN, который позволяет выбирать по диапазону? Или что в MongoDB есть оператор $elemMatch, который позволяет фильтровать по элементам массива? Или что в SQL есть оператор IN, который позволяет выбирать по списку значений? Или что в MongoDB есть оператор $in, который делает то же самое?
Ну, вы поняли. Перевод из SQL в MongoDB - это не просто замена слов на другие слова. Это целый процесс изучения и адаптации к новой парадигме работы с данными.
								
									Владимир Vladimir								
								Спасибо, а если сделать без ключей?							
											Похожие вопросы
- Помогите написать sql запросы
- Помогите решить SQL задачки?
- SQL. Выводятся не все данные. 4 задача.
- Чем отличаются разные SQL?
- Не очень понятен синтаксис запросов SQL
- Вопрос по SQL. Помогите понять решение задачи
- Вопрос по SQL + Python
- Что делает кусок коды, выделенный синим? SQL
- Подскажите, есть ли такое понятие чистый SQL???
- Microsoft SQL. Процедура вывода максимального количества товаров за определенную сумму
 
			