gpt4 book ai didi

java - Camel/MongoDB - $in 运算符引用另一个集合/文档数组

转载 作者:太空宇宙 更新时间:2023-11-04 14:22:02 25 4
gpt4 key购买 nike

我遇到了this blog post寻找组织关系的方法。我感到困惑的是以下语句背后的语法。我意识到凭借javascript变量,以下是可能的..

var party = { 
_id: "chessparty",
name: "Chess Party!",
attendees: ["seanhess", "bob"]
}

var user = { _id: "seanhess", name: "Sean Hess", events: ["chessparty"]}

db.events.save(party)
db.users.save(user)

db.events.find({_id: {$in: user.events}}) // events for user
db.users.find({_id: {$in: party.attendees}}) // users for event

最后两行让我感到困惑,因为我正在尝试在 Java 中做类似的事情。所以我理解这个想法,但我想用 Java 来完成这个任务,更具体地说,是 Camel/MongoDB 组件。

我一直在引用the following documentation并查看“findAll”操作。那么我是否需要首先运行一个查询来获取数组,例如“user.events”,然后运行第二个查询来查找事件列表?或者有没有办法引用集合“db.user”中的字段“events”作为“db.events”查询的一部分?

通过单个查询来调整以下内容..

pseudo idea: db.events.find({_id: {$in: [db.user.events]}})

最终我希望将其翻译成如下内容..

from("direct:findAll")
.setBody().constant("{ \"_id\": {$in :\"user.events\" }}")
.to("mongodb:myDb?database=sample&collection=events&operation=findAll")
.to("mock:resultFindAll");

我对 mongodb Camel 组件有点陌生,所以我想知道是否有任何专家已经做过类似的事情?并就该主题有任何建议。或者未经 2 天的反复试验就发现这个简单的方法是不可能的..?

谢谢!

最佳答案

我想我应该结束这个问题,现在已经有一段时间了,几周前我才能够解决这个问题。

基本上我会在事件集合中存储一个 userId 数组。

示例:

{
_id : 22bjh2345j2k3v235,
eventName : "something",
eventDate : ISODate(...),
attendees : [
"abc123",
"def098",
"etc..."
]
}

本质上是将用户分配给事件。通过这种方式,我可以找到用户参与的所有事件,并且最终得到每个事件的用户列表。

如果我想查找某个用户的所有事件:

from("direct:findAll")
.setBody().simple("{ \"attendees\": \"${header.userId}\" }")
.to("mongodb:myDb?database=sample&collection=events&operation=findAll")
.to("mock:resultFindAll");

关于java - Camel/MongoDB - $in 运算符引用另一个集合/文档数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27080831/

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