Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MongoDb C-检查数组中是否有任何对象具有类型为的字段_C#_Mongodb_Mongodb .net Driver - Fatal编程技术网

C# MongoDb C-检查数组中是否有任何对象具有类型为的字段

C# MongoDb C-检查数组中是否有任何对象具有类型为的字段,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我有一个叫做汽车的收藏,里面有汽车文档 每辆车都有一个名为FormData的数组字段 FormData中的每个对象都有一个数据字段,该字段应该是一个对象,但在我们的应用程序中被错误地写入字符串。我的目标是选择FormData[i]中数据类型为string的所有汽车。但是,我只能通过点表示法一次检查一个级别,例如检查第二个FormData对象是否包含'string'类型的数据字段。我是这样做的: var filter = Builders<BsonDocument>.Filter.Ty

我有一个叫做汽车的收藏,里面有汽车文档

每辆车都有一个名为FormData的数组字段

FormData中的每个对象都有一个数据字段,该字段应该是一个对象,但在我们的应用程序中被错误地写入字符串。我的目标是选择FormData[i]中数据类型为string的所有汽车。但是,我只能通过点表示法一次检查一个级别,例如检查第二个FormData对象是否包含'string'类型的数据字段。我是这样做的:

var filter = Builders<BsonDocument>.Filter.Type("FormData.0.Data", BsonType.String);
编辑:作为对综合评论的回应-好主意,我只是记得我以前用它检查过下面这样的特定子字段,我可以根据我提出的问题调整它。不幸的是,我不知道如何从C驱动程序使用它:

db.cars.aggregate([{ $match: { 'FormData.Data.field2450': { '$type': 2 } } }], {cursor: { batchSize: 0 }});
编辑2,请求的FormData obj-FormData直接位于每个Car文档中,可以是空数组或任意长度:


您是否尝试过使用构建查询?嘿,titi23,谢谢您的回答。我有一个我将更新的问题来展示一个例子,但我不知道如何使用C驱动程序。你能发布你的对象吗?当我对字符串数据进行测试时,当字段为object类型并推送字符串列表时,我在arra中得到了额外的字段,以识别{t:System.Collections.Generic.List1[System.string],[1aaaa,1nnn,1ssss]`@教授79抱歉回复太慢-将其添加到问题中。FormData直接位于每个Car文档中。@VSO没问题,现在我有更多信息-您也可以发布Car类吗?
db.cars.find( { "FormData.1.Data": { $type : 2 } } )
db.cars.aggregate([{ $match: { 'FormData.Data.field2450': { '$type': 2 } } }], {cursor: { batchSize: 0 }});