Mongodb. How to query using Regex.IsMatch for array of strings










0















Could you please explain how to use Regex.IsMatch on the IEnumerable property.



I tried to do it like this:



var portfolios = Collection.AsQueryable();
portfolios = portfolios.Where(portfolio => portfolio.KeyWords.Any(keyword => Regex.IsMatch(keyword, "hal", RegexOptions.IgnoreCase)));


where KeyWords is the property - public IEnumerable<string> KeyWords get; set;



as a result i see that i recieved such query:



aggregate([ "$match" : "KeyWords" : "$elemMatch" : "" : /hal/i ])


But it seems that this query does not work because the return result is 0.



To clarify what i need. I have a document with structure like:




"_id" : "5b488f1f666ba93004f990e0",
"KeyWords" : [
"New portfolio",
"Bayern",
"Halana",
"6"
],



What i want is to find all documents with specific query by Regex.IsMatch for objects in KeyWords array.
For example i want to find all documents with where Keywords contains object that contains text "hal"



Thanks










share|improve this question
























  • Well the conditions are incorrect. What are you actually trying to match in the document? Why Any()? Are you trying to match a "list of regular expressions" or an "expression against any of a list of strings in the document"? Showing the document you expect to match makes it much clearer.

    – Neil Lunn
    Nov 13 '18 at 9:21











  • Neil Lunn, could you please explain how to create correct condition. What i actually have is document something like "_id" : "5b488f1f666ba93004f990e0", "KeyWords" : [ "New portfolio", "Bayern", "Halana", "6" ], and what i want is find all documents that have keyword with regex.match

    – Maks
    Nov 14 '18 at 11:41
















0















Could you please explain how to use Regex.IsMatch on the IEnumerable property.



I tried to do it like this:



var portfolios = Collection.AsQueryable();
portfolios = portfolios.Where(portfolio => portfolio.KeyWords.Any(keyword => Regex.IsMatch(keyword, "hal", RegexOptions.IgnoreCase)));


where KeyWords is the property - public IEnumerable<string> KeyWords get; set;



as a result i see that i recieved such query:



aggregate([ "$match" : "KeyWords" : "$elemMatch" : "" : /hal/i ])


But it seems that this query does not work because the return result is 0.



To clarify what i need. I have a document with structure like:




"_id" : "5b488f1f666ba93004f990e0",
"KeyWords" : [
"New portfolio",
"Bayern",
"Halana",
"6"
],



What i want is to find all documents with specific query by Regex.IsMatch for objects in KeyWords array.
For example i want to find all documents with where Keywords contains object that contains text "hal"



Thanks










share|improve this question
























  • Well the conditions are incorrect. What are you actually trying to match in the document? Why Any()? Are you trying to match a "list of regular expressions" or an "expression against any of a list of strings in the document"? Showing the document you expect to match makes it much clearer.

    – Neil Lunn
    Nov 13 '18 at 9:21











  • Neil Lunn, could you please explain how to create correct condition. What i actually have is document something like "_id" : "5b488f1f666ba93004f990e0", "KeyWords" : [ "New portfolio", "Bayern", "Halana", "6" ], and what i want is find all documents that have keyword with regex.match

    – Maks
    Nov 14 '18 at 11:41














0












0








0








Could you please explain how to use Regex.IsMatch on the IEnumerable property.



I tried to do it like this:



var portfolios = Collection.AsQueryable();
portfolios = portfolios.Where(portfolio => portfolio.KeyWords.Any(keyword => Regex.IsMatch(keyword, "hal", RegexOptions.IgnoreCase)));


where KeyWords is the property - public IEnumerable<string> KeyWords get; set;



as a result i see that i recieved such query:



aggregate([ "$match" : "KeyWords" : "$elemMatch" : "" : /hal/i ])


But it seems that this query does not work because the return result is 0.



To clarify what i need. I have a document with structure like:




"_id" : "5b488f1f666ba93004f990e0",
"KeyWords" : [
"New portfolio",
"Bayern",
"Halana",
"6"
],



What i want is to find all documents with specific query by Regex.IsMatch for objects in KeyWords array.
For example i want to find all documents with where Keywords contains object that contains text "hal"



Thanks










share|improve this question
















Could you please explain how to use Regex.IsMatch on the IEnumerable property.



I tried to do it like this:



var portfolios = Collection.AsQueryable();
portfolios = portfolios.Where(portfolio => portfolio.KeyWords.Any(keyword => Regex.IsMatch(keyword, "hal", RegexOptions.IgnoreCase)));


where KeyWords is the property - public IEnumerable<string> KeyWords get; set;



as a result i see that i recieved such query:



aggregate([ "$match" : "KeyWords" : "$elemMatch" : "" : /hal/i ])


But it seems that this query does not work because the return result is 0.



To clarify what i need. I have a document with structure like:




"_id" : "5b488f1f666ba93004f990e0",
"KeyWords" : [
"New portfolio",
"Bayern",
"Halana",
"6"
],



What i want is to find all documents with specific query by Regex.IsMatch for objects in KeyWords array.
For example i want to find all documents with where Keywords contains object that contains text "hal"



Thanks







.net mongodb mongodb-query iqueryable






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 14 '18 at 11:51







Maks

















asked Nov 13 '18 at 9:13









MaksMaks

512




512












  • Well the conditions are incorrect. What are you actually trying to match in the document? Why Any()? Are you trying to match a "list of regular expressions" or an "expression against any of a list of strings in the document"? Showing the document you expect to match makes it much clearer.

    – Neil Lunn
    Nov 13 '18 at 9:21











  • Neil Lunn, could you please explain how to create correct condition. What i actually have is document something like "_id" : "5b488f1f666ba93004f990e0", "KeyWords" : [ "New portfolio", "Bayern", "Halana", "6" ], and what i want is find all documents that have keyword with regex.match

    – Maks
    Nov 14 '18 at 11:41


















  • Well the conditions are incorrect. What are you actually trying to match in the document? Why Any()? Are you trying to match a "list of regular expressions" or an "expression against any of a list of strings in the document"? Showing the document you expect to match makes it much clearer.

    – Neil Lunn
    Nov 13 '18 at 9:21











  • Neil Lunn, could you please explain how to create correct condition. What i actually have is document something like "_id" : "5b488f1f666ba93004f990e0", "KeyWords" : [ "New portfolio", "Bayern", "Halana", "6" ], and what i want is find all documents that have keyword with regex.match

    – Maks
    Nov 14 '18 at 11:41

















Well the conditions are incorrect. What are you actually trying to match in the document? Why Any()? Are you trying to match a "list of regular expressions" or an "expression against any of a list of strings in the document"? Showing the document you expect to match makes it much clearer.

– Neil Lunn
Nov 13 '18 at 9:21





Well the conditions are incorrect. What are you actually trying to match in the document? Why Any()? Are you trying to match a "list of regular expressions" or an "expression against any of a list of strings in the document"? Showing the document you expect to match makes it much clearer.

– Neil Lunn
Nov 13 '18 at 9:21













Neil Lunn, could you please explain how to create correct condition. What i actually have is document something like "_id" : "5b488f1f666ba93004f990e0", "KeyWords" : [ "New portfolio", "Bayern", "Halana", "6" ], and what i want is find all documents that have keyword with regex.match

– Maks
Nov 14 '18 at 11:41






Neil Lunn, could you please explain how to create correct condition. What i actually have is document something like "_id" : "5b488f1f666ba93004f990e0", "KeyWords" : [ "New portfolio", "Bayern", "Halana", "6" ], and what i want is find all documents that have keyword with regex.match

– Maks
Nov 14 '18 at 11:41













0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53277499%2fmongodb-how-to-query-using-regex-ismatch-for-array-of-strings%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53277499%2fmongodb-how-to-query-using-regex-ismatch-for-array-of-strings%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







這個網誌中的熱門文章

How to read a connectionString WITH PROVIDER in .NET Core?

Node.js Script on GitHub Pages or Amazon S3

Museum of Modern and Contemporary Art of Trento and Rovereto