mongodb 如何把从一个集合中的查询结果 插入到一个新的集合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb 如何把从一个集合中的查询结果 插入到一个新的集合相关的知识,希望对你有一定的参考价值。
把从集合A 从的查询结果,插入到集合B,mongo 语句该怎么写?
参考技术A 可以直接将两个集合查出来传到View里啊collectionA.find().toArray(function(errA, recordsA)
collectionB.find().toArray(function(errB, recordsB)
res.render("view",
collectionA: recordsA,
collectionB: recordsB
);
);
); 参考技术B 一个新的集合 50
如何在聚合阶段之后使用条件限制 MongoDB 结果
【中文标题】如何在聚合阶段之后使用条件限制 MongoDB 结果【英文标题】:How to limit MongoDB results with condition after the aggregation stage 【发布时间】:2021-11-04 08:11:28 【问题描述】:我想在聚合阶段之后根据条件获取结果。我的代码给了我一个包含 4 个结果而不是 3 个的数组。 逻辑是用户滑动并将数据存储在一个集合中。集合存储第一次滑动,如果其他用户滑动现有条目,则更新集合文档而不是新插入,这取决于谁先滑动,因此 $or 查询。这工作正常,直到我在用户集合上将现有用户的连接状态更改为 false。结果是一个长度为 4 而不是 3 的数组。额外的数组是从 $or 查询创建的,并且只有 user_two。
滑动收藏 _id(ObjectID) - user_one(string) - user_two(string) - status_one(number) - status_two(number)
用户收藏 _id(ObjectID) - user_name(string) - hookups(boolean)
const fetchHookups = (req, res, next) =>
var query =
$or: [
user_one: ObjectId(req.body._id),
user_two: ObjectId(req.body._id) ,
]
Swipe.aggregate([
$match: query
,
$lookup:
from: 'users',
let: user_one: '$user_one', hookupstatus: true ,
pipeline: [
$match:
$expr:
$and: [
$eq: ["$_id", '$$user_one'] ,
$eq: ["$hookups", '$$hookupstatus'] ,
],
],
as: "userone"
,
$unwind:
path: "$userone",
preserveNullAndEmptyArrays: true,
,
,
$lookup:
from: 'users',
let: user_two: '$user_two', hookupstatus: true ,
pipeline: [
$match:
$expr:
$and: [
$eq: ["$_id", '$$user_two'] ,
$eq: ["$hookups", '$$hookupstatus'] ,
],
],
as: "usertwo"
,
$unwind:
path: "$usertwo",
preserveNullAndEmptyArrays: true,
,
,
$sort:
_id: -1
]).exec(function(error, response)
if (error)
console.log(error)
else
res.json(response)
)
【问题讨论】:
【参考方案1】:感谢@Thomas,我想通了,方法如下:
$redact:
$cond: [
$eq: ["$userone.hookups", true],
$eq: ["$usertwo.hookups", true],
,
"$$KEEP",
"$$PRUNE"
]
,
【讨论】:
【参考方案2】:我没有尝试过,但 $redact 运算符听起来就像你想要的那样。
这是一个相当古老但写得很好的例子: Find documents whose array field contains at least n elements of a given array
【讨论】:
以上是关于mongodb 如何把从一个集合中的查询结果 插入到一个新的集合的主要内容,如果未能解决你的问题,请参考以下文章