基于内部json值在DocumentDB中进行查询 - C#

时间:2017-12-18 12:43:54

标签: c# azure c#-4.0 azure-cosmosdb

我在DocumentDB中有2个对象,如下所示,

{
    "TrackGoods": {
        "Attributes": {
            "Attribute": {
                "BlockName": "Default",
                "Brand": "Default",
                "CaseType": "Carton",
            }
        },
        "Codes": [{
            "trackcode": "191155772333RIF1"
        },
        {
            "trackcode": "721141315199RIF2"
        }],
        "Time": "2017-12-18T13:35:04.0792480+05:30",
        "IpAddress": "127.0.0.1",
        "Lat": "155.00",
        "Long": "-202.00",
    }
}

{
    "TrackGoods": {
        "Attributes": {
            "Attribute": {
                "BlockName": "Default1",
                "Brand": "Default1",
                "CaseType": "Carton1",
            }
        },
        "Codes": [{
            "trackcode": "191155772333RIF3"
        },
        {
            "trackcode": "721141315199RIF4"
        }],
        "Time": "2017-12-18T13:35:04.0792480+05:30",
        "IpAddress": "127.0.0.1",
        "Lat": "155.00",
        "Long": "-202.00",
    }
}

我想获取带有trackcode =' 191155772333RIF1'的代码的文档。

我尝试了以下查询,但它没有从DocDB返回文档,

string selectdoc = "select doc.TrackGoods from doc join Codes in doc.Codes where Codes.trackcode = '191155772333RIF1'";
    query = new SqlQuerySpec(selectdoc,
        new SqlParameterCollection(new SqlParameter[] {
          new SqlParameter { Name = "@code", Value = code }
          })); 

任何人都可以帮我从DocDB获取文档。

谢谢

1 个答案:

答案 0 :(得分:1)

我尝试使用此查询,它似乎正常工作:

select doc.TrackGoods from doc join Codes in doc.TrackGoods.Codes where Codes.trackcode = '191155772333RIF1'

您在.TrackGoods.之后错过了in

有关JOIN的更多信息,请查看this article