我正在对集合
运行聚合
并使用对另一个子集合
的查找。
每个子级可能有也可能没有包含字符串
的字段(foo
)。
如果这些字段
中至少有1个对任何子子文档
具有字符串
,我将项目
一个布尔
。
这样我就可以
db.Parent.aggregate([
{
'$lookup': {
'from': 'Children',
'localField': '_id',
'foreignField': 'parentId',
'as': 'CHILDREN'
}
}, {
childHasFoo: {
"$CHILDREN" : {$elemMatch: {foo: {$ne: ''}}}
}
}
]
您可以看到我对childhasfoo
的投影。我想我可以使用$ElemMatch
或$AnyElementTrue
。请记住,foo
也可能不存在于/所有子子文档
上。因此需要考虑到这一点。
谢谢!
$MAP
数组运算符迭代子
数组的循环,$ne
检查条件,这将返回布尔值$AnyElementTrue
要检查的元素是否为true {
$addFields: {
childHasFoo: {
$anyElementTrue: {
$map: {
input: "$CHILDREN",
in: { $ne: ["$$this.foo", ""] }
}
}
}
}
}
第二种选择是更精确的条件,
$trim
删除字符串中的空白$not
和$in
要检查的字符串是否为空“”或null
然后为false,否则为true {
$addFields: {
childHasFoo: {
$anyElementTrue: {
$map: {
input: "$CHILDREN",
in: {
$not: {
$in: [
{ $trim: { input: "$$this.foo" } },
["", null]
]
}
}
}
}
}
}
}
我是新来的mongo。我有以下收藏。 文件: 请求: 文档集合中的typeId是文档类型的id,其中请求中的typeId是也可以为空的外部字段。如何获得以下输出。
我在Firestore中收集了大量带有随机ID的文档,每个文档都有两个字段,一个名称和一个描述。我想让我的应用程序允许用户输入一系列字符,然后向他呈现所有包含字符序列的文档,比方说名称字段。使用Firebase及其查询是否可行,如果可行,您能给我一个Kotlin或Java的代码示例吗?我知道有一些方法,如或,但由于我还不知道用户正在查找哪个文档,如果没有弄错,我就不能使用它们。 例如,如果我有3个
我正在尝试查找不包含至少一个具有特定字段值的文档的所有文档。例如,下面是一个示例集合: 我希望找到docs块中没有包含至少一个foo=1的记录的文档的每个记录。在上面的示例中,应该只返回第二个文档。 我还查看了$nin运算符,但示例只显示数组包含基元值列表时的情况,而不是附加文档。当我尝试使用类似于下面的东西来实现这一点时,它查找的是确切的文档,而不仅仅是我想要的foo字段。 有没有用基本运算符来
我正在尝试从MongoDB中的数组中获取一个元素。我认为聚合过滤器是正确的应用程序。但是我已经尝试了一百万次,我仍然找不到问题所在。你能帮我吗? MongoDB示例数据: 我的解决方案: 我的结果: 预期结果: 我已经检查了Mongo参考:https://docs.mongodb.com/manual/reference/operator/aggregation/filter/#example M
任何人都可以帮助我查询mongo以释放数组,我使用的是mongdb本机驱动程序我的收集文档如下,也请忽略我的objectId它只是示例 而我的预期产出是 我只想解开我的数组,在一个查询中的爱好描述之间添加一个逗号,谢谢你的帮助
问题内容: {用户名:’我’,公司:{“您的公司”:{…}} 我想在用户记录(用户集合)中插入公司,以便: {username:’me’,companies:{“ yourcompany”:{…},“ mycompany”:{…}} 但是这个名字是动态的。 为此。.{username:’me’,companies:{“ yourcompany”:{…},“ companyid”:{…}} 我该怎么