编辑:ARRAY_CONTAINS现在支持部分匹配,如吉姆·斯科特(Jim Scott)在下面指出的那样,我认为这是一个比这个公认的更好的答案。
您的
servings数组只有一个条目
{"amount": 1, "description": "bar", "weightInGrams":21}。这可以在您的示例中一次食用:
SELECt rootFROM root WHERe root.servings[0].description = "bar"
但这听起来并不是您要的。因此,假设您具有以下条件:
{ ... "servings": [ {"description": "baz", ....}, {"description": "bar", ....}, {"description": "bejeweled", ....} ], ...}并且您想查找其中一份的描述为“ bar”的文档,那么您可以使用以下UDF:
function(servings, description) { var s, _i, _len; for (_i = 0, _len = servings.length; _i < _len; _i++) { s = servings[_i]; if (s.description === description) { return true; } } return false;}使用此查询:
SELECt * FROM c WHERe udf.findServingsByDescription(c.servings, "bar")



