<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:39:50 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[CSHARP-1514] Can you pass any mongo query as string to C# driver and get result back? </title>
                <link>https://jira.mongodb.org/browse/CSHARP-1514</link>
                <project id="10041" key="CSHARP">C# Driver</project>
                    <description>&lt;p&gt;I am using Mongo C# driver to query data. Executing command from shell/robomongo seems easy to use but trying to execute same command from C# seems little difficult.&lt;/p&gt;

&lt;p&gt;e.g. In Shell, I am executing following command:&lt;br/&gt;
 db.runCommand(&lt;br/&gt;
 {&lt;br/&gt;
     &quot;find&quot;:&quot;Equity&quot;,&lt;br/&gt;
     &quot;filter&quot;: &lt;/p&gt;
{&quot;Ticker&quot;:&quot;AAPL US Equity&quot;, &quot;Ask&quot;:101.2600000000000100}
&lt;p&gt; }&lt;br/&gt;
)&lt;/p&gt;

&lt;p&gt;Same command is C# driver as follow:&lt;br/&gt;
var client = new MongoClient();&lt;br/&gt;
var database = client.GetServer().GetDatabase(&quot;MONGOXDB&quot;);&lt;br/&gt;
Dictionary&amp;lt;string, object&amp;gt; dictionary = new Dictionary&amp;lt;string, object&amp;gt;();&lt;br/&gt;
            dictionary.Add(&quot;find&quot;, &quot;Equity&quot;);&lt;/p&gt;

&lt;p&gt;BsonElement bElement1 = new BsonElement(&quot;Ticker&quot;, &quot;AAPL US Equity&quot;);&lt;/p&gt;

&lt;p&gt;BsonElement bElement2 = new BsonElement(&quot;Ask&quot;(BsonValue)101.2600000000000100);&lt;/p&gt;

&lt;p&gt;dictionary.Add(&quot;filter&quot;, new BsonDocument &lt;/p&gt;
{ bElement1, bElement2 }
&lt;p&gt;);&lt;/p&gt;

&lt;p&gt;var command = new CommandDocument&lt;/p&gt;
{
dictionary
}
&lt;p&gt;;&lt;/p&gt;

&lt;p&gt;CommandResult result = database.RunCommand(command);&lt;/p&gt;

&lt;p&gt;BsonDocument bdocument = result.Response;&lt;/p&gt;


&lt;p&gt;---------------------------------------&lt;br/&gt;
Now question is there way of passing Mongo query as string in C# and then get result back. &lt;/p&gt;</description>
                <environment>Windows,&lt;br/&gt;
&lt;br/&gt;
Mongo:&lt;br/&gt;
/* 1 */&lt;br/&gt;
{&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;version&amp;quot; : &amp;quot;3.2.0&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;gitVersion&amp;quot; : &amp;quot;45d947729a0315accb6d4f15a6b06be6d9c19fe7&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;targetMinOS&amp;quot; : &amp;quot;Windows 7/Windows Server 2008 R2&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;modules&amp;quot; : [],&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;allocator&amp;quot; : &amp;quot;tcmalloc&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;javascriptEngine&amp;quot; : &amp;quot;mozjs&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;sysInfo&amp;quot; : &amp;quot;deprecated&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;versionArray&amp;quot; : [ &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3, &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2, &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0, &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;openssl&amp;quot; : {&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;running&amp;quot; : &amp;quot;OpenSSL 1.0.1p-fips 9 Jul 2015&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;compiled&amp;quot; : &amp;quot;OpenSSL 1.0.1p-fips 9 Jul 2015&amp;quot;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;buildEnvironment&amp;quot; : {&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;distmod&amp;quot; : &amp;quot;2008plus-ssl&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;distarch&amp;quot; : &amp;quot;x86_64&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;cc&amp;quot; : &amp;quot;cl: Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x64&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;ccflags&amp;quot; : &amp;quot;/nologo /EHsc /W3 /wd4355 /wd4800 /wd4267 /wd4244 /wd4290 /wd4068 /wd4351 /we4013 /we4099 /we4930 /Z7 /errorReport:none /MD /O2 /Oy- /Gw /Gy /Zc:inline&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;cxx&amp;quot; : &amp;quot;cl: Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x64&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;cxxflags&amp;quot; : &amp;quot;/TP&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;linkflags&amp;quot; : &amp;quot;/nologo /DEBUG /INCREMENTAL:NO /LARGEADDRESSAWARE /OPT:REF&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;target_arch&amp;quot; : &amp;quot;x86_64&amp;quot;,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;target_os&amp;quot; : &amp;quot;windows&amp;quot;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;bits&amp;quot; : 64,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;debug&amp;quot; : false,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;maxBsonObjectSize&amp;quot; : 1.67772e+007,&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;storageEngines&amp;quot; : [ &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;devnull&amp;quot;, &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;ephemeralForTest&amp;quot;, &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;mmapv1&amp;quot;, &lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;wiredTiger&amp;quot;&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],&lt;br/&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;ok&amp;quot; : 1.0000000000000000&lt;br/&gt;
}</environment>
        <key id="244202">CSHARP-1514</key>
            <summary>Can you pass any mongo query as string to C# driver and get result back? </summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="9">Done</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="nikhilsalunkhe@gmail.com">Nikhil Salunkhe</reporter>
                        <labels>
                            <label>question</label>
                    </labels>
                <created>Wed, 16 Dec 2015 18:58:55 +0000</created>
                <updated>Fri, 5 Apr 2019 13:57:44 +0000</updated>
                            <resolved>Thu, 22 Dec 2016 19:22:19 +0000</resolved>
                                    <version>1.10.1</version>
                                                    <component>API</component>
                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="1116498" author="craiggwilson" created="Wed, 16 Dec 2015 21:24:28 +0000"  >&lt;p&gt;Couple of things:&lt;/p&gt;

&lt;p&gt;1. You&apos;ll be restricted to using mongodb 3.2 or greater. The find command was introduced in mongodb 3.2.&lt;br/&gt;
2. You&apos;ll need to manually handle dealing with cursors. Once you exhaust the first batch, you&apos;ll need to run the getMore command manually with the correct cursor id. Most importantly, once you are done with the results you want, you will need kill the cursor using the killCursor command or else you will leave unused resources open on the server.&lt;/p&gt;</comment>
                            <comment id="1116492" author="nikhilsalunkhe@gmail.com" created="Wed, 16 Dec 2015 21:20:27 +0000"  >&lt;p&gt;Thanks, Craig.&lt;/p&gt;

&lt;p&gt;In future, I will post question on the google group that you mentioned. I&lt;br/&gt;
was not aware of this group till now so thank you for that.&lt;/p&gt;

&lt;p&gt;Reason for running find command manually:&lt;/p&gt;

&lt;p&gt;We have data management at Xenomorph software Inc to manage financial data.&lt;br/&gt;
We are doing POC work to see if our product can sit on top of Mongo DB&lt;br/&gt;
database and expose all data in Mongo DB. This way all data in MongoDb is&lt;br/&gt;
available through out product API.&lt;br/&gt;
In initial stages, we are looking to pass Mongo query from our product API&lt;br/&gt;
and underneath it talks to Mongo C# driver and returns result to product.&lt;/p&gt;

&lt;p&gt;So far using runCommand we have managed to run simple query such as&lt;br/&gt;
buildInfo or  find:&quot;collectionname&quot;.But when it gets to complex queries&lt;br/&gt;
then you have to build command correctly in Mongo C# driver i.e. build&lt;br/&gt;
bason document etc and then pass to Command.&lt;/p&gt;

&lt;p&gt;Please see attached screenshot for what are trying to do and may be you&lt;br/&gt;
suggest best approach for using Mongo C# driver.&lt;/p&gt;

&lt;p&gt;Regards,&lt;br/&gt;
Nikhil&lt;/p&gt;


&lt;p&gt;On Wed, Dec 16, 2015 at 2:42 PM, Craig Wilson (JIRA) &amp;lt;jira@mongodb.org&amp;gt;&lt;/p&gt;
</comment>
                            <comment id="1116372" author="craiggwilson" created="Wed, 16 Dec 2015 19:43:50 +0000"  >&lt;p&gt;My apologies, you are using version 1.10 of the driver and not 2.2. You cannot do what you are asking with a string, although it is simple enough to parse by using &lt;tt&gt;BsonDocument.Parse(json)&lt;/tt&gt;. You can then pass that anywhere you&apos;d like.&lt;/p&gt;

&lt;p&gt;Craig&lt;/p&gt;</comment>
                            <comment id="1116371" author="craiggwilson" created="Wed, 16 Dec 2015 19:42:33 +0000"  >&lt;p&gt;Hi Nihkil,&lt;/p&gt;

&lt;p&gt;The proper place to ask questions like this is in the &lt;a href=&quot;https://groups.google.com/forum/#!forum/mongodb-user&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;user group&lt;/a&gt;. We generally reserve jira tickets for features and bug requests. &lt;/p&gt;

&lt;p&gt;As has been answered in two previous tickets, &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-1502&quot; title=&quot;db.RunCommand() does work for &amp;quot;find&amp;quot; command in c# &quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-1502&quot;&gt;&lt;del&gt;CSHARP-1502&lt;/del&gt;&lt;/a&gt; AND &lt;a href=&quot;https://jira.mongodb.org/browse/CSHARP-1513&quot; title=&quot;How to run query specified below using c# driver &quot; class=&quot;issue-link&quot; data-issue-key=&quot;CSHARP-1513&quot;&gt;&lt;del&gt;CSHARP-1513&lt;/del&gt;&lt;/a&gt;, there isn&apos;t a good reason to be running the find command manually. If you have one, please let us know. You can specify a filter using a json string: collection.Find(&quot;&lt;/p&gt;
{&apos;Ticker&apos;:&apos;AAPL US Equity&apos;, &apos;Ask&apos;:101.2600000000000100}
&lt;p&gt;&quot;).ToList() will do what you want it do to. If you haven&apos;t read the documenation, you can find it &lt;a href=&quot;http://mongodb.github.io/mongo-csharp-driver/2.2/reference/driver/crud/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Craig&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="102544" name="BuildInfo command in TimeScape.png" size="53802" author="nikhilsalunkhe@gmail.com" created="Wed, 16 Dec 2015 21:20:27 +0000"/>
                            <attachment id="102545" name="Find command TimeScape.png" size="37296" author="nikhilsalunkhe@gmail.com" created="Wed, 16 Dec 2015 21:20:27 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hsf16n:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>