Совокупный счетчик изменяется, когда несколько возвратов

Для веб-API вы можете добавить параметр привязки обязательных параметров в WebApiConfig:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        //...
        config.ParameterBindingRules.Insert(0, GetCustomParameterBinding);
        //...
    }

    public static HttpParameterBinding GetCustomParameterBinding(HttpParameterDescriptor descriptor)
    {
        if (descriptor.ParameterType == typeof(ObjectId))
        {
            return new ObjectIdParameterBinding(descriptor);
        }
        // any other types, let the default parameter binding handle
        return null;
    }

    public class ObjectIdParameterBinding : HttpParameterBinding
    {
        public ObjectIdParameterBinding(HttpParameterDescriptor desc)
            : base(desc)
        {
        }

        public override Task ExecuteBindingAsync(ModelMetadataProvider metadataProvider, HttpActionContext actionContext, CancellationToken cancellationToken)
        {
            try
            {
                SetValue(actionContext, new ObjectId(actionContext.ControllerContext.RouteData.Values[Descriptor.ParameterName] as string));
                return Task.CompletedTask;
            }
            catch (FormatException)
            {
                throw new BadRequestException("Invalid ObjectId format");
            }
        }
    }
}

И использовать его без каких-либо дополнительных атрибутов в контроллере:

 [Route("{id}")]
 public IHttpActionResult Get(ObjectId id)
0
задан Stephanie 18 January 2019 в 03:47
поделиться

1 ответ

return n.name, count(distinct n.name) означает «вернуть каждое отдельное значение n.name и его количество разных значений». Число всегда должно быть 1, так как отличное значение, очевидно, различно.

Если вы на самом деле ищете, сколько раз у каждого человека были исходящие отношения с фильмом, название которого указано в $mycollection, сделайте это вместо этого (где count(*) подсчитывает количество совпадений с данным n.name). ):

MATCH (n:person)-->(m:movie)
WHERE m.Title in $mycollection
RETURN n.name, count(*);

Обратите внимание, что в приведенном выше запросе пропущен шаблон [watched], найденный в вашем запросе, поскольку этот синтаксис (без двоеточия до watched) вообще не фильтрует. Он просто присваивает отношение переменной с именем watched, но эта переменная не используется иначе, и поэтому является излишней.

Если вы намеревались использовать watched в качестве типа отношения, то сделайте это вместо:

MATCH (n:person)-[:watched]->(m:movie)
WHERE m.Title in $mycollection
RETURN n.name, count(*);

Этот измененный запрос возвращает количество раз, когда каждый человек смотрел фильм с названием в $mycollection. ]

0
ответ дан cybersam 18 January 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: