Hey Momchil, sorry for a late response. Here's a couple thoughts:
1) if you're using the python client it will automatically choose json as the output and return objects to you. If you're using anything else, you can use the :output parameter to choose the return type you want. Valid values are json,xml,terse,verbose. (ex: https://<server>:8443/remote/system.find?searchText=<foo>&:output=terse). json and xml are what you'd expect. Terse returns a table, and verbose returns "human readable" although honestly I find terse or json easier to read myself.
2) system.find does a full text search in a number of columns; there are places in the UI where we can start the search, move to the page, and dynamically load the results once they've completed. But 3s to 120s sounds like an order of magnitude off -- it's possible that the api is searching more columns than the UI.
3) the UI uses cursors and dynamically loads data pages based on how you scroll the table (it's not very noticable, but if you see the 'green dot' above the right scroll bar of any table view, it will flash when we're loading new pages of data). When you're asking for large data sets from the API, we don't control both sides -- you need to change the script to query for things in batches. For example, you can add filters to your queries (see my ppt in the doc section here for how to add a where clause). If you're getting systems, for example, maybe you should get them by group, or by first letter, etc.
4) that could be loosened up; sounds like it's basically the default (restricted).
5) I'm only cursorily familiar with MongoDB, sorry. However, you can always do a core.help?command=<foo> to get more help about the <foo> command.
1) I have read the documentation. Problem is that the "output" parameter is not valid for the Core.executeQuery method
2) I guess so
3) According to the log file the query is using LOCKS and fails with resourse locked.
Now, when running against a 60 000 client environment it is very hard not to hit a lock
4) that was a minor note. It will ease up exploitation as well as legit usage
5) The point was to get the generated SQL query instead of the result of the query
Thank you for your response