MongoDB数据库学习(补充操作)

1、投影和sort

查询文档时,默认情况是按照_id的值进行排列(升序),sort()可以用来指定文档的排序的规则,sort()需要传递一个对象来指定排序规则 1表示升序 -1表示降序 , limit skip sort 可以以任意的顺序进行调用

db.emp.find({}).sort({sal:1,empno:-1});

在查询时,可以在第二个参数的位置来设置查询结果的 投影

db.emp.find({},{ename:1 , _id:0 , sal:1});

2、文档间的关系

1、一对一(one to one):
夫妻 (一个丈夫 对应 一个妻子),在MongoDB,可以通过内嵌文档的形式来体现出一对一的关系

2、一对多(one to many)/多对一(many to one):
用户 - 订单, 文章 - 评论。可以通过内嵌文档来映射一对多的关系

3、多对多(many to many):
老师 - 学生

1、一对一的关系
db.wifeAndHusband.insert([
    {
        name:"黄蓉",
        husband:{
            name:"郭靖"
        }
    },{
        name:"潘金莲",
        husband:{
            name:"武大郎"
        }
    }
]);

db.wifeAndHusband.find(); // 一对一的关系


2、一对多   用户(users) 和 订单(orders)
db.users.insert([{
    username:"swk"
    },{
    username:"zbj"
}]);

db.order.insert({
    list:["牛肉","漫画"],
    user_id: ObjectId("59c47e35241d8d36a1d50de0")
    
});

db.users.find()
db.order.find()

//查找用户swk的订单
var user_id = db.users.findOne({username:"zbj"})._id;
db.order.find({user_id:user_id});


3、多对多关系
db.teachers.insert([
    {name:"洪七公"},
    {name:"黄药师"},
    {name:"龟仙人"}
]);
db.stus.insert([
    {
        name:"郭靖",
        tech_ids:[
            ObjectId("59c4806d241d8d36a1d50de4"),
            ObjectId("59c4806d241d8d36a1d50de5")
        ]
    },{
        name:"孙悟空",
        tech_ids:[
            ObjectId("59c4806d241d8d36a1d50de4"),
            ObjectId("59c4806d241d8d36a1d50de5"),
            ObjectId("59c4806d241d8d36a1d50de6")
        ]
    }
])

db.teachers.find()
db.stus.find()

猜你喜欢

转载自blog.csdn.net/qq_40844662/article/details/108726168
今日推荐