En utilisant RavenDB v4.2 ou supérieur, je veux configurer un index qui interroge une autre collection. En gros, reproduire une clause WHERE IN dans la partie mapping de l'index.
Les modèles ci-dessous représentent deux collections. Ici, chaque User
a une collection d'identifiants de dispositifs :
class Device {
public string Id { get; set; }
public string Name { get; set; }
}
class User {
public string Id { get; set; }
public string BlogPostId { get; set; }
public List<string> DeviceIds { get; set; }
}
Considérons maintenant l'indice suivant comme un exemple de ce que j'essaie d'obtenir :
public class DeviceIndex : AbstractIndexCreationTask<Device, DeviceIndex.Result>
{
public class Result
{
public string Id { get; set; }
public string DeviceName { get; set; }
public bool HasUser { get; set; }
public int UserCount { get; set; }
}
public DeviceIndex()
{
Map = devices => from d in devices
select new Result
{
Id = d.Id,
DeviceName = d.Name,
HasUser = ... ?, // How to get this from Users collection?
UserCount = ... ? // same...
};
}
Comment remplir le HasUser
vrai/faux et UserCount
propriétés dans cet index ? Par exemple, comment puis-je interroger la collection 'User' ici ?
Veuillez noter que cet exemple est sérieusement simplifié pour des raisons de brièveté. Je ne suis pas vraiment intéressé par les solutions de contournement, ni par la modification de la logique sous-jacente.