嵌入文档的MongoDb$匹配
上面的代码在mongo shell中工作,但下面的代码不工作为什么嵌入文档的MongoDb$匹配,mongodb,Mongodb,上面的代码在mongo shell中工作,但下面的代码不工作为什么 db.entities.aggregate([$match : {"Company.Id" : {$gt : 11}}]) 它什么也不显示 这是我的蒙哥达文件 db.entities.aggregate([{$match : {Company : {Id : {$gt : 11}}}}]) 来自mongodb 当字段包含嵌入文档时,查询可以指定嵌入文档上的精确匹配,也可以使用点表示法指定嵌入文档中各个字段的匹配 所以这会起作
db.entities.aggregate([$match : {"Company.Id" : {$gt : 11}}])
它什么也不显示
这是我的蒙哥达文件
db.entities.aggregate([{$match : {Company : {Id : {$gt : 11}}}}])
来自mongodb
当字段包含嵌入文档时,查询可以指定嵌入文档上的精确匹配,也可以使用点表示法指定嵌入文档中各个字段的匹配
所以这会起作用
"_id" : ObjectId("552ca154993cfc98fef1e13c"),
"Name" : "R",
"Address" : "RAdd",
"Company" : {
"Name" : "something",
"Id" : 14
}
可能是重复的不那不是我的意思。。!我想知道的是,在$project的情况下,我可以作为db.entities.aggregate([{$project:{Company:{Name:1}}}}])访问嵌入的文档,但在匹配db.entities.aggregate的情况下([{$match:{Company:{Id:{$gt:11}}}}])不会给我任何结果为什么???@pilku:你在最初的问题中没有写任何关于
$project
的东西。我们应该猜猜吗?你可能想要阅读,这大大提高了获得有用答案的可能性。您可能会发现的优秀文章也很有帮助。db.entities.aggregate([{$match:{Company:{Name:{something}}}}])
-不给出任何结果db.entities.aggregate([{$match:{Company.Name:“something”}}])
-给出的结果应该是嵌入文档上的精确匹配,而不是单个字段上的精确匹配。如果您使用的是单个字段,则需要使用点表示法。嗯,是的,我尝试使用相同的查找和相同的输出。但是为什么不用$project呢??我的意思是,$project Yes允许$project
。我猜这是因为为了执行匹配操作,它会查找{:}
条件,试图将其与公司而不是名称匹配,而投影只是将带有指定字段的文档传递到管道中的下一个阶段。1。我们如何将上述查询转换为java?2.假设我有MapObj,它的结构在json下面,那么我们如何构造上面关于Map对象的查询呢<代码>{“公司”:{“名称”:“某物”,“Id”:14}}
db.entities.aggregate([{
'$match':{
"Company" : {
"Name" : "something",
"Id" : 14
}
}
}
])