MongoDB query is working fine but in C# query is not working

52 views Asked by At
db.sectors.aggregate([
  {
    "$lookup": {
      "from": "virtualChains",
      "localField": "VirtualChainId",
      "foreignField": "_id",
      "as": "VirtualChains"
    }
  },
  {
    "$unwind": "$VirtualChains"
  },
  {
    "$unwind": "$VirtualChains.ZoneConfigInfos"
  },
  {
    "$match": {
      "VirtualChains.ZoneConfigInfos.ZoneId": ObjectId("ZoneId")
    }
  },
  {
    "$project": {
      "_id": 1,
      "Name": 1,
      "ArabicName": 1,
      "Code": 1,
      "ImageUrl": 1,
      "ArabicImageUrl": 1,
      "Index": 1,
      "Description": 1,
      "DescriptionAR": 1,
      "IsVirtual": 1,
      "StoreId": "$VirtualChains.ZoneConfigInfos.StoreId"
    }
  }
])

The above Mongo query is working well and returns values. But in C# code it returns errors as below.

If I add the below code it will return as:

JSON reader was expecting a value but found 'VirtualChains'.

var virProjectDoc = Utils.GetProjectQuery(Properties.Resources.VIRTUAL_SECTOR_PROJECT);
var virSecBuilder = Builders<BsonDocument>.Filter;

var virFilter = virSecBuilder.AnyEq("VirtualChains.ZoneConfigInfos.ZoneId", ObjectId.Parse(zoneId));
virFilter &= virSecBuilder.Eq("IsActive", true);

var virtuSector = MongoContext.Sectors.Aggregate()
    .Lookup("virtualChains", "_id", "VirtualChainId", "VirtualChains")
    .Unwind("VirtualChains")
    .Unwind("VirtualChains.ZoneConfigInfos")
    .Match(virFilter)
    .Project<SectorSummaryExIndex>("{Name:1,ArabicName:1,Code:1,ImageUrl:1,ArabicImageUrl:1,Index:1,Description:1,DescriptionAR:1,IsVirtual:1,StoreId:$VirtualChains.ZoneConfigInfos.StoreId}")
    .ToList()
    .OrderBy(c => c.Index);

return virtuSector;

But if I add a $ sign before the unwind it will throw an error like this:

JSON reader was expecting a value but found '$VirtualChains'.

.Unwind("$VirtualChains")

0

There are 0 answers