关于MongoDB查询语言的介绍可以看我的这篇文章:
https://blog.csdn.net/Jifu_M/article/details/112549035
项目介绍
我们拥有一个bookshop.js的文件,将文件导入的MongoDB后按照要求进行查询工作。
练习用的bookshop.js已被上传到我的资源。
项目开始
首先要创建一个文件夹来进行项目,之后启动MongoDB,最后读取文件:
mkdir DATA
mongod –dbpath DATA –port 4000
mongo –port 4000
load("bookshop.js");
(1) 查找期刊总数。
db.bookshop.find({"journal":{"$exists":true}}).count();
(2) 以一种漂亮的格式列出标题为算法的图书文档中包含的所有信息。
db.bookshop.find({"book.title":"Algorithms"}).pretty();
(3) 以漂亮的格式列出作者的 last name是 Potter,first name是Harry的所有书籍的标题、作者、出版商、年份和价格:
db.bookshop.find({"$and":[{"book.authors.lname":"Potter"},{"book.authors.fname":"Harry"}]},{"_id":0,"book.title":1,"book.authors":1,"book.publisher":1,"book.year":1,"book.price":1}).pretty();
(4) 以一种漂亮的格式列出2013年之前出版的所有书籍的标题、作者、出版商、年份和价格:
db.bookshop.find({"book.year":{"$lt":2013}},{"_id":0,"book.title":1,"book.authors":1,"book.publisher":1,"book.year":1,"book.price":1}).pretty();
(5) 以一种漂亮的格式列出标题,出版商,年份和价格的所有书,书的关键字包含"Database ":
db.bookshop.find({"book.keywords":{"$elemMatch":{$eq:"Database"}}},{"_id":0,"book.title":1,"book.publisher":1,"book.year":1,"book.price":1}).pretty();
(6) 以一个漂亮的格式列出包含3个关键字的所有书的标题,出版商,年份和价格:
db.bookshop.find({"book.keywords":{$size:3}},{"_id":0,"book.title":1,"book.publisher":1,"book.year":1,"book.price":1}).pretty();
(7) 以一种漂亮的格式列出没有关键字的所有书籍的标题、出版商、年份和价格:
这里首先要确定book是否存在,然后再找没有关键字的书。
db.bookshop.find({"$and":[{"book":{"$exists":true}},{"book.keywords":null}]},{"_id":0,"book.title":1,"book.publisher":1,"book.year":1,"book.price":1}).pretty();
(8)以漂亮的格式列出价格低于12.00的音乐CD的名称、制作人、年份和价格:
db.bookshop.find({"musicCD.price":{"$lt":12.00}},{"_id":0,"musicCD.title":1,"musicCD.producer":1,"musicCD.year":1,"musicCD.price":1}).pretty();
(9)以漂亮的格式列出2018年出版的期刊的编号、标题、vol、issue和month
db.bookshop.find({"journal.year":2018},{"_id":0,"journal.callnum":1,"journal.title":1,"journal.vol":1,"journal.issue":1,"journal.month":1}).pretty();
(10)以一种漂亮的格式列出在描述中包含"programming" 的所有书籍的标题、出版商、年份和价格:
db.bookshop.find({"book.description":{"$regex": "programming" } },{"_id":0,"book.title":1,"book.publisher":1,"book.year":1,"book.price":1}).pretty();