若要获取不同的子文档字段值列表,可以使用dot(。)。语法如下-
db.yourCollectionName.distinct("yourOuterFieldName.yourInnerFieldName");
为了理解这个概念,让我们用文档创建一个集合。使用文档创建集合的查询如下-
> db.getDistinctListOfSubDocumentFieldDemo.insertOne( ... { ... "StudentId": 101, ... "StudentPersonalDetails": [ ... { ... "StudentName": "John", ... "StudentAge":24 ... }, ... { ... "StudentName": "Carol", ... "StudentAge":21 ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5c90a9abb74d7cfe6392d7d8") } > db.getDistinctListOfSubDocumentFieldDemo.insertOne( ... ... { ... "StudentId": 102, ... "StudentPersonalDetails": [ ... { ... "StudentName": "Carol", ... "StudentAge":26 ... }, ... { ... "StudentName": "Bob", ... "StudentAge":21 ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5c90a9ceb74d7cfe6392d7d9") } > db.getDistinctListOfSubDocumentFieldDemo.insertOne( ... { ... "StudentId": 103, ... "StudentPersonalDetails": [ ... { ... "StudentName": "Bob", ... "StudentAge":25 ... }, ... { ... "StudentName": "David", ... "StudentAge":24 ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5c90a9e6b74d7cfe6392d7da") }
在find()
method的帮助下显示集合中的所有文档。查询如下-
> db.getDistinctListOfSubDocumentFieldDemo.find().pretty();
以下是输出-
{ "_id" : ObjectId("5c90a9abb74d7cfe6392d7d8"), "StudentId" : 101, "StudentPersonalDetails" : [ { "StudentName" : "John", "StudentAge" : 24 }, { "StudentName" : "Carol", "StudentAge" : 21 } ] } { "_id" : ObjectId("5c90a9ceb74d7cfe6392d7d9"), "StudentId" : 102, "StudentPersonalDetails" : [ { "StudentName" : "Carol", "StudentAge" : 26 }, { "StudentName" : "Bob", "StudentAge" : 21 } ] } { "_id" : ObjectId("5c90a9e6b74d7cfe6392d7da"), "StudentId" : 103, "StudentPersonalDetails" : [ { "StudentName" : "Bob", "StudentAge" : 25 }, { "StudentName" : "David", "StudentAge" : 24 } ] }
这是获取子文档字段值的唯一列表的查询-
> db.getDistinctListOfSubDocumentFieldDemo.distinct("StudentPersonalDetails.StudentName");
以下是输出-
[ "Carol", "John", "Bob", "David" ]
这可能很容易,但不知道怎么做。 我有一个表,可以为特定的非键列字段重复值。如何使用query Builder或Eloquent编写SQL查询,以获取该列具有不同值的行? 请注意,我不是只获取该列,它与其他列值结合在一起,所以可能无法真正工作。因此,这个问题基本上可以是如何指定我想在查询中区分的列,现在不接受任何参数?
我有多个mongodb文档,其中有一些不同的字段,但有一个相同的字段名作为标识符。如何使用同一字段查询不同的文档?例如,以下文档都有一个“name”字段,但没有其他公共字段。 如果我想询问所有23岁的男性,我会怎么做?以下代码不返回任何内容,因为没有包含这两个字段的文档。相反,有两个单独的文档,每个文档都有一个匹配字段。
我遇到了mongo的一个奇怪行为,我想澄清一下 我的要求很简单:我想获得集合中单个文档的大小。我找到了两种可能的解决方案: 反对。bsonsize—返回字节大小的javascript方法 在这里,我提供了一些我进行测试的代码: > 我创建了一个新的数据库“test”,并输入了一个只有一个属性的简单文档:type:“auto” stats()函数调用的输出:db。测验stats(): } bsons
我想从引用的文档中获取字段值。Mongodb版本是3.4。 假设我有两个收藏foo和bar。Foo提到bar: 相应的条形码文档看起来像这样: 我尝试了以下聚合函数来归档此结果: 聚合功能: 但我的结果是这样的: 我试着用谷歌搜索它,我查看了mongodb文档,但没有找到解决方案。 是我错过了什么还是这不可能? 谢谢
我有以下文件:
假设我有一个Foo类和一个jax-rs FooResource,它将API公开给CRUD Foos。 Foo表示MongoDB文档。 在FooResource中,我将有如下内容: 问题是,json中的foo对象将只包含已经更改的字段,但我从来不知道它将是什么字段。 我使用带Panache扩展的Quarkus,我看到的唯一方法是从DB检索实体,然后检查从http请求接收到的foo对象中的每个字段,看