Access key having dot(.) for Raven Query Language

47 views
Skip to first unread message

nirav sahayata

unread,
Dec 12, 2019, 6:17:41 AM12/12/19
to RavenDB - 2nd generation document database
Hello,

I have message structure as below, whats the correct syntax to retrieve key value having dot(.)


{
   
"UniqueMessageId": "9159b3b0-fc4b-50b3-3af2-938a5477d1fc",
   
"MessageMetadata": {
       
"MessageId": "205fb229-2373-49da-9329-ab0c01096c6c"        
   
},
   
"Headers": {
       
"ABC.DEF": "205fb229-2373-49da-9329-ab0c01096c6c",
       
"ABC.PQR": "205fb229-2373-49da-9329-ab0c01096c6c",        
   
}    
}


Using below query, it always provide value for 'ABC.DEF', 'ABC.PQR' as null. 

from ProcessedMessages
select UniqueMessageId, MessageMetadata.MessageId,Headers.'ABC.DEF'    


from ProcessedMessages
select UniqueMessageId, MessageMetadata.MessageId,Headers.ABC.DEF


below query return error for square bracket

from ProcessedMessages
select UniqueMessageId, MessageMetadata.MessageId,Headers.['ABC.DEF']



Thanks,
Nirav.



Ivan Montilla

unread,
Dec 12, 2019, 7:55:24 AM12/12/19
to RavenDB - 2nd generation document database
You can use a JS projection like this:

from ProcessedMessages as pm
select {
   
UniqueMessageId: pm.UniqueMessageId,
    MessageId: pm.MessageMetadata.MessageId,
    Headers: pm.Headers["ABC.DEF"]

}

Grisha Kotler

unread,
Dec 12, 2019, 8:34:35 AM12/12/19
to rav...@googlegroups.com

--
You received this message because you are subscribed to the Google Groups "RavenDB - 2nd generation document database" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ravendb+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ravendb/36d5dac5-9ff9-4581-b798-db6d78ea14ec%40googlegroups.com.

nirav sahayata

unread,
Dec 16, 2019, 3:09:15 AM12/16/19
to RavenDB - 2nd generation document database
This works for me for projection ,thank you. How can we use same in where clause ? its giving error for bracket in where clause 

Oren Eini (Ayende Rahien)

unread,
Dec 16, 2019, 3:18:43 AM12/16/19
to ravendb
In the where clause, you can use foo.'bar-baz'

--
You received this message because you are subscribed to the Google Groups "RavenDB - 2nd generation document database" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ravendb+u...@googlegroups.com.


--
Oren Eini
CEO   /   Hibernating Rhinos LTD
Skype:  ayenderahien
Support:  sup...@ravendb.net

Grisha Kotler

unread,
Dec 16, 2019, 3:19:08 AM12/16/19
to rav...@googlegroups.com
How does your query look like?


Grisha Kotler
Team Leader  /   Hibernating Rhinos LTD
Skype:  grisha.kotler
Support:  sup...@ravendb.net

nirav sahayata

unread,
Dec 16, 2019, 5:43:38 AM12/16/19
to RavenDB - 2nd generation document database
This doesn't work, below query returns result without where clause though it has matching result

from ProcessedMessages as pm
where search(pm.Headers.'NServiceBus.EnclosedMessageTypes', '*task*') 
select {
    UniqueMessageId: pm.UniqueMessageId,
    MessageId: pm.MessageMetadata.MessageId,
    MessageType:pm.Headers["NServiceBus.EnclosedMessageTypes"],
    TimeSent: pm.Headers["NServiceBus.TimeSent"],
    ProcessingStarted: pm.Headers["NServiceBus.ProcessingStarted"],
    ProcessingEnded: pm.Headers["NServiceBus.ProcessingEnded"],
    ProcessingEndpoint: pm.Headers["NServiceBus.ProcessingEndpoint"]
}
To unsubscribe from this group and stop receiving emails from it, send an email to rav...@googlegroups.com.

nirav sahayata

unread,
Dec 17, 2019, 12:39:21 AM12/17/19
to RavenDB - 2nd generation document database
Below query works for me , it retrieve valid results.  

from ProcessedMessages as pm

select {
    UniqueMessageId: pm.UniqueMessageId,
    MessageId: pm.MessageMetadata.MessageId,
    MessageType:pm.Headers["NServiceBus.EnclosedMessageTypes"],
    TimeSent: pm.Headers["NServiceBus.TimeSent"],
    ProcessingStarted: pm.Headers["NServiceBus.ProcessingStarted"],
    ProcessingEnded: pm.Headers["NServiceBus.ProcessingEnded"],
    ProcessingEndpoint: pm.Headers["NServiceBus.ProcessingEndpoint"]
}

I would like to add where clause , tried below but it doesn't work.

from ProcessedMessages as pm
where search(pm.Headers.'NServiceBus.EnclosedMessageTypes', '*task*') 
select {
    UniqueMessageId: pm.UniqueMessageId,
    MessageId: pm.MessageMetadata.MessageId,
    MessageType:pm.Headers["NServiceBus.EnclosedMessageTypes"],
    TimeSent: pm.Headers["NServiceBus.TimeSent"],
    ProcessingStarted: pm.Headers["NServiceBus.ProcessingStarted"],
    ProcessingEnded: pm.Headers["NServiceBus.ProcessingEnded"],
    ProcessingEndpoint: pm.Headers["NServiceBus.ProcessingEndpoint"]
}

from ProcessedMessages as pm
where search(pm.Headers["NServiceBus.EnclosedMessageTypes"], '*task*') 
select {
    UniqueMessageId: pm.UniqueMessageId,
    MessageId: pm.MessageMetadata.MessageId,
    MessageType:pm.Headers["NServiceBus.EnclosedMessageTypes"],
    TimeSent: pm.Headers["NServiceBus.TimeSent"],
    ProcessingStarted: pm.Headers["NServiceBus.ProcessingStarted"],
    ProcessingEnded: pm.Headers["NServiceBus.ProcessingEnded"],
    ProcessingEndpoint: pm.Headers["NServiceBus.ProcessingEndpoint"]
}

To unsubscribe from this group and stop receiving emails from it, send an email to rav...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages