gpt4 book ai didi

mongodb - 结合MongoDB中不同文档的两个字段

转载 作者:IT老高 更新时间:2023-10-28 12:29:10 25 4
gpt4 key购买 nike

我有这些文档在一个集合中:

   {topic : "a",
messages : [ObjectId("21312321321323"),ObjectId("34535345353"),...]
},
{topic : "b,
messages : [ObjectId("1233232323232"),ObjectId("6556565656565"),...]
}

是否有可能通过消息字段的组合获得结果?例如,我喜欢这样:

     {[
ObjectId(""),ObjectId(""),ObjectId(""),ObjectId("")
]}

我认为 MapReduce 可以做到这一点,但就我而言,这些文档没有任何共同点。现在我正在使用 javascript 和循环在后端执行此操作,但我认为这不是最佳选择。谢谢。

最佳答案

您可以使用 $group Aggregation Framework 中的运算符.当然,要使用聚合框架,您需要确保您在 MongoDB 2.2 或更高版本上运行。

如果与 $push 一起使用您将获得所有串联在一起的消息列表。

db.myCollection.aggregate({ $group: { messages: { $push: '$messages' } } });

如果与 $addToSet 一起使用你只会得到不同的值。

db.myCollection.aggregate({ $group: { messages: { $addToSet: '$messages' } } });

如果你想先过滤候选文档,你可以使用$match .

db.myCollection.aggregate([
{ $match: { topic: { $in: [ 'a', 'b' ] } } },
{ $group: { matches: { $sum: 1 }, messages: { $push: '$messages' } } }
]);

关于mongodb - 结合MongoDB中不同文档的两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14298912/

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