gpt4 book ai didi

node.js - mongodb 中填充的替代方案?

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:03 24 4
gpt4 key购买 nike

我有一个名为 group 的数组,其中包含 ID 列表,下面有 find 和 populate 语句,它与此完美配合,我使用 populate 来获取附加数据 - 下面的查询:

var stories = await Story
.find( { 'group' : { $in : group } } )
.populate('group')
.populate('createdBy')
.sort('-created')

我有一个聚合查询(如下),它可以执行我想要的操作,但是 1) 它不使用 group 数组中的值,它只是返回所有内容,2) 我没有像上面的 find 那样获得 groupcreatedBy 字段的附加数据。

var spellings = await Spelling.aggregate([
{ "$sort": { "keyStageLevel": 1, "spellingLevel": 1 } },
{ "$group" : {
"_id": { "keyStageLevel": "$keyStageLevel", "class": "$class" },
"data": {
"$push": {
"spellingLevel": "$spellingLevel",
"class": "$class",
"name": "$name",
"spellings": "$spellings",
"created": "$created",
"_id": "$_id",
"group": "$group",
"createdBy": "$createdBy"
}
}
}},
{ "$sort": { "_id": 1 } }
])

编辑 - 这是一个拼写文档示例:

 {
"_id":"5b1ff6f62bb1894efcf76ea0",
"spellings":["here","are","spellings"],
"name":"withclass",
"group":"5ab79a639083cf35339b880a",
"createdBy":"5ab79185d47b833506ff94b1",
"created":"2018-06-12T16:38:14.571Z",
}

任何人都可以帮助我了解如何在我的 aggregate 语句中使用 group 数组中的值,以及如何像为 find 所做的那样为 groupcreatedBy 字段添加附加数据?

最佳答案

您可以尝试下面$lookup聚合以填充 groupcreatedBy 字段

var spellings = await Spelling.aggregate([
{ "$match": { "group": { "$in": group }}},
{ "$sort": { "keyStageLevel": 1, "spellingLevel": 1 } },
{ "$lookup": {
"from": CreatedBy.collection.name,
"let": { "createdBy": "$createdBy" },
"pipeline": [
{ "$match": { "$expr": { "$eq": [ "$_id", "$$createdBy" ] } } }
],
"as": "createdBy"
}},
{ "$lookup": {
"from": Group.collection.name,
"let": { "group": "$group" },
"pipeline": [
{ "$match": { "$expr": { "$eq": [ "$_id", "$$group" ] } } }
],
"as": "group"
}},
{ "$unwind": "$group" },
{ "$unwind": "$createdBy" },
{ "$group" : {
"_id": { "keyStageLevel": "$keyStageLevel", "class": "$class" },
"data": {
"$push": {
"spellingLevel": "$spellingLevel",
"class": "$class",
"name": "$name",
"spellings": "$spellings",
"created": "$created",
"_id": "$_id",
"group": "$group",
"createdBy": "$createdBy"
}
}
}},
{ "$sort": { "_id": 1 } }
])

关于node.js - mongodb 中填充的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50825441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com