使用C#MongoDB驱动程序的嵌套数组$ pull查询

我按照预期在mongo shell上运行以下查询。

db.getCollection('personnels').update( { _id: ObjectId("55f6728b9d73a15807885de8"), "Devices._id":ObjectId("55fa5f7ac9e7863a3836e331") }, { $pull:{ "Devices.$.DeviceCloudFolders": { "CloudFolderId": ObjectId("5615124b06275f072040c4f1")}} } ); 

这是我的文档结构:

 { "_id" : ObjectId("55f6728b9d73a15807885de8"), "FirstName" : "Tolga", "Devices" : [ { "_id" : ObjectId("55fa5f7ac9e7863a3836e331"), "Name" : "tolga-laptop", "DeviceCloudFolders" : [{ "AuthorityType" : 1, "CloudFolderId" : ObjectId("55f96db5c9e7863a3836e310"), "Status" : 1 }], "Status" : 1 } ], "Status" : 1 } 

我需要在C#中使用它并且无法弄清楚如何使用它。

我从这些线开始:

 var filter = Builders.Filter.And( Builders.Filter.Eq("_id", ownerPersonnelId), Builders.Filter.Eq("Devices._id", _id)); var update = Builders.Update.PullFilter("Devices.$.DeviceCloudFolders", /*couldn't figure out what goes here*/)) Personnels.FindOneAndUpdateAsync(filter, update); 

我不确定,但你可以试试这个:

 var update = Builders.Update.PullFilter( "Devices.$.DeviceCloudFolders", Builders.Filter.Eq("CloudFolderId", _cloudFolderId));