【问题标题】:compare two collections in mongodb using java or an simple query使用 java 或简单查询比较 mongodb 中的两个集合
【发布时间】:2014-06-23 05:41:31
【问题描述】:

我有一个画廊的以下文件(Json),

{ "_id": "53698b6092x3875407fefe7c", “状态”:“活动”, “颜色”: [ “红色的”, “绿色” ], “绘画”:[ { “名称”:“蒙娜丽莎”, “作者”:“列奥纳多达芬奇” }, { "name": "JungleArc", “by”:“雷伯格格拉夫” } ] }

现在我也有一组颜色说
颜色系列:["black","yellow","re​​d","green","blue","pink"]
我想通过与提供的文本匹配的名称来获取绘画,例如 “MonaLisa”(作为搜索查询)我还想将两种颜色与 COLORS-COLLECTION 进行比较,如果颜色在 COLORS 中有任何匹配的颜色-COLLECTION 那么它应该返回这幅画。
我想要以下内容:

{ “绘画”:[ { “名称”:“蒙娜丽莎”, “作者”:“列奥纳多达芬奇” } ] }

请帮帮我!!提前致谢。

【问题讨论】:

  • @joao:我确实尝试过使用 map-reduce,但无法获得预期的输出。 @yaoxing:非常感谢,解决了我的问题

标签: mongodb mongodb-java mongo-java mongo-jackson-mapper mongojack


【解决方案1】:

如果我的理解正确,aggregation framework 会做你的工作:

db.gallery.aggregate([
    {"$unwind": "$paintings"},
    {"$match": {"paintings.name": 'MonaLisa', "colors": {"$in": ["black","yellow","red","green","blue","pink"]}}},
    {"$project": {"paintings": 1, "_id": 0}}
]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 2016-09-27
    • 2012-05-11
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多