关于mongodb的引用查询

我使用的是nodejs中的mongodb模块,在想article表插入数据时,需要引用user表的一个字段,所以我在插入数据时插入一个

authorId:{
        '$ref':'user',
        '$id':ObjectId('59c402c162bfdc0b1840285d'),
}

然后我在查询时使用的是:
db.collection('article').find();
显示的数据

{
    "_id" : ObjectId("59c404f41482f323a0b22b92"),
    "articleTit" : "亲亲我的宝贝",
    "content" : "暗示健康圣诞节快乐四大皆空时代峰峻客户电饭锅电饭锅",
    "synopsisi" : "暗示健康圣诞节快乐四大皆空时代峰峻客户电饭锅电饭锅",
    "time" : 1506018548681.0,
    "authorHeadImg" : "head.jpg",
    "authorId" : {
        "$ref" : "user",
        "$id" : ObjectId("59c402c162bfdc0b1840285d")
    },
    "author" : "我是一个渣渣",
    "viewNumber" : NaN
}
{
    "_id" : ObjectId("59c404f41482f323a0b22b92"),
    "articleTit" : "亲亲我的宝贝",
    "content" : "暗示健康圣诞节快乐四大皆空时代峰峻客户电饭锅电饭锅",
    "synopsisi" : "暗示健康圣诞节快乐四大皆空时代峰峻客户电饭锅电饭锅",
    "time" : 1506018548681.0,
    "authorHeadImg" : "head.jpg",
    "authorId" : {
        "$ref" : "user",
        "$id" : ObjectId("59c402c162bfdc0b1840285d")
    },
    "author" : "我是一个渣渣",
    "viewNumber" : NaN
}

我想问的是,我这样一次查询多条,在authorId字段。为什么不是直接显示的用户信息,

{
    "_id" : ObjectId("59c402c162bfdc0b1840285d"),
    "phone" : "13686097633",
    "pwd" : "wo521521",
    "nickname" : "路生",
    "personal_profile" : "我是一个渣渣,我坚信不疑。",
    "email" : "",
    "headImg" : "head.jpg",
    "sex" : 3,
    "session" : "79ae2472004bd096ae7ea8adacc5ea218a81ec01a70e76d92f541ba9ee88d6f2"
}

那这样我一次查询多条,我如何获取用户的信息,并且对应到每一条去。

阅读 2.8k
1 个回答

MongoDB 数据库本身是没有类似 mysql 的关联查询的.

如果你实现你这个功能,
可以用 mongoose 定义好 article 和 author 的 schema,然后用 populate 操作来实现.

或者
自己通过便利所有author字段,然后查询对应的文档然后,修改查询出的结果.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题