收藏
回答

连表查询结果缺乏对应关系?

两个集合

根据menber.opend连表查询到的结果info在根路径的一个单独的数组中,没有在menber的每个子元素中。

现在我想让结果info在menber的子元素对象中,该如何?


集合team

{
	"_id": "a8831daa5fe7287200cbaf63716467b9",
	"owner": "oXxPz5BFZ6VRWSpI-VdlXLWXUr-0",
	"name": "大迷彩车队",
	"createTime": {
		"$date": "2020-12-26T12:11:30.844Z"
	},
	"icon": "cloud://test-7glrsles74e0cee8.7465-test-7glrsles74e0cee8-1304547559/icon/sanhe.png",
	"menber": [{
		"openid": "oXxPz5BFZ6VRWSpI-VdlXLWXUr-0",
		"joinTime": {
			"$date": "2020-12-26T12:11:30.844Z"
		},
		"ok": true,
		"desc": "领队"
	}]
}


集合user

{
	"_id": "oXxPz5BFZ6VRWSpI-VdlXLWXUr-0",
	"info": {
		"avatarUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/GzOpK4ibb25XEbjruMhMv7QaUBjr3BYA2wicSibw0FQgV0fyCIkjEf2bslkWrxcZsibL73968Fk4z4I1cicibBptcpqw/132",
		"city": "长沙",
		"country": "中国",
		"gender": 1,
		"language": "zh_CN",
		"nickName": "十万八千里",
		"province": "湖南"
	},
	"loc": {
		"accuracy": 65,
		"errMsg": "getLocation:ok",
		"horizontalAccuracy": 65,
		"latitude": 28.24595,
		"longitude": 113.08093,
		"speed": -1,
		"verticalAccuracy": 65
	},
	"userInfo": {
		"appId": "wx547a801974880a8d",
		"openId": "oXxPz5BFZ6VRWSpI-VdlXLWXUr-0"
	},
	"last": {
		"$date": "2020-12-27T02:05:56.824Z"
	},
	"pst": {
		"type": "Point",
		"coordinates": [113.08093, 28.24595]
	},
	"_openid": "oXxPz5BFZ6VRWSpI-VdlXLWXUr-0"
}


查询语句

  async function getTeam(event{
    let teamId = event.teamId
    if (!teamId) {
      return 'teamId不能为空'
    }
    return await teamClt.aggregate()
      .lookup({
        from'user',
        localField: 'menber.openid',
        foreignField: '_openid',
        as'info'
      })
      .match({
        _id: teamId
      })
      .end()
  }


查询结果

{
	"list": [{
		"_id": "a8831daa5fe7287200cbaf63716467b9",
		"owner": "oXxPz5BFZ6VRWSpI-VdlXLWXUr-0",
		"name": "大迷彩车队",
		"createTime": "2020-12-26T12:11:30.844Z",
		"icon": "cloud://test-7glrsles74e0cee8.7465-test-7glrsles74e0cee8-1304547559/icon/sanhe.png",
		"menber": [{
			"openid": "oXxPz5BFZ6VRWSpI-VdlXLWXUr-0",
			"joinTime": "2020-12-26T12:11:30.844Z",
			"ok": true,
			"desc": "领队"
		}],
		"info": [{
			"_id": "oXxPz5BFZ6VRWSpI-VdlXLWXUr-0",
			"info": {
				"avatarUrl": "https://thirdwx.qlogo.cn/mmopen/vi_32/GzOpK4ibb25XEbjruMhMv7QaUBjr3BYA2wicSibw0FQgV0fyCIkjEf2bslkWrxcZsibL73968Fk4z4I1cicibBptcpqw/132",
				"city": "长沙",
				"country": "中国",
				"gender": 1,
				"language": "zh_CN",
				"nickName": "十万八千里",
				"province": "湖南"
			},
			"loc": {
				"accuracy": 65,
				"errMsg": "getLocation:ok",
				"horizontalAccuracy": 65,
				"latitude": 28.24595,
				"longitude": 113.08093,
				"speed": -1,
				"verticalAccuracy": 65
			},
			"userInfo": {
				"appId": "wx547a801974880a8d",
				"openId": "oXxPz5BFZ6VRWSpI-VdlXLWXUr-0"
			},
			"last": "2020-12-27T02:05:56.824Z",
			"pst": {
				"type": "Point",
				"coordinates": [113.08093, 28.24595]
			},
			"_openid": "oXxPz5BFZ6VRWSpI-VdlXLWXUr-0"
		}]
	}],
	"errMsg": "collection.aggregate:ok"
}


。。。。。


根据menber.opend连表查询到的结果info在根路径的一个单独的数组中,没有在menber的每个子元素中。

现在我想让结果info在menber的子元素对象中,该如何?

比如

{
  _id:"xxx"
  menber:[   openid:'xxx'
            {info:{连表查询的结果}}
        ]
 }

谢谢

最后一次编辑于  2020-12-27
回答关注问题邀请回答
收藏
登录 后发表内容
问题标签