Is there a user-friendly interface I can type MongoDB queries at? - mongodb

I am new to MongoDB, but have gone pretty far with studying some of the fundamentals. So far, I have been using the mongo shell to write my queries. I was wondering if anyone here can introduce me to a simple and straightforward user-friendly interface I can use to type out my queries.
I have examined Studio3T and Robo3T. Both do not really meet my requirements as they are too heavy and full of menus I don't need at the moment. I am tempted to go on a wild search and download spree, but I figured some help here might be a better approach.
I need it to be the following:
-Simple and lightweight
-Completes curly and square brackets
-May or may not offer error checks while writing queries
-May or may not offer auto-complete of keywords.
I'd really appreciate any pointers. Thanks

Related

What are the basic important things that will be needed to develop an application with ionic2 including Mongodb?

I have been previously learning, how to make applications with ionic2, Angular2 --> For Frontend.
And backend--> Firebase.
Now I have to change my backend to MongoDB.So, What all important things I should learn in order to use MongoDB?Please suggest.
Thank you.
Note: Please let me know if any more inputs are needed relating to this.
You can learn following to accomplish a decent backend with mongodb :
Learn mongodb with some latest aggregation features to make sure the your queries are optimized. mongodb has great documentation which can help you. Install mongo shell and play around to get hands on it.
Make sure your have good cluster-replica management to make sure your data is backed up properly.
Extremely important, make sure you add indexes on the fields which you find are reference points for majority of your queries. Trust me, adding a simple index to a commonly referenced field makes a huge difference. Also, just as an addon, check what type of index you would need based on your requirement. There are various available in mongodb documentation.
Make sure you structure your collections in such a way that there are not many $looups(inner joins) however still making sure how you can keep it scalable. It totally depends on your application schema though.
Try hands on Mongodb Map-Reduce as its very handy.
Install RoboMongo, a GUI client for mongodb if you are used to stuff like phpmyadmin.
Node js(optional if required) :
1. Learn express which is really easy. It will help you to get started with basic routing, cors handling , middlewares and such http-web related stuff.
2. Mongoose, which is a mongodb package for node. There are many others, however if you are familiar with ORM then mongoose is really handy to get you going with simple steps.
3. Authentication for RESTful APIs : There are many options available to be honest. However, based on my experience, you can use passport-jwt, which is really simple and effective.

mongodb and sql for document versioning system

I'm a computer engineer student and i've got a basically simple assignment but i'd like to make it a little more interesting :). Basically I have to create a simple multiuser, online document versioning system using Java or .NET. Because I'm more a .NET guy I'm gonna use ASP.NET or Silverlight (it's not yet decided).
Anyway the intersting part: I want to use MongoDB to store the documents (they can be virtually anything, video, audio, simple MSOffice files, plain text), each version of them and the related metadata (which library, folder they're in etc). I'd like to put anything else, like users, permissions etc.(the specs are not yet completed) in to an ordinary relational database. The question is what do you think about this? Do you think this makes any sense or I'm just trying to over complicate the whole thing? Would it be simpler to use only mongodb for everything or leave the nosql thingy entirely out of it? Is there any conventions for this kind of stuff? :)
BTW. under any other circumstences I'd use some free, battle tested solution for doc versioning, but I have to design and implement this myself, and I'm trying to do it at least a little unconventionally :).
Thanks for every comment:), any help appreciated:)
Greets
If you were using something like Mongoid on Rails, this would be trivial. http://mongoid.org/docs/extras.html Look for Versioning. The ODM has it built in for you. I've yet to use Mongo in the .NET world, it's always been something like Raven, so I'm not sure if the libraries for it easily work like Mongoid does.
Mongo handles relational data as well. Things you want normalized (e.q. user records) can have references to other documents in the DB. And of course what ever magic document you want to store works as well.
Doing things unconventionnaly is usually a good way to discover new ways (better ways ?) so it's a good idea.
Using mongodb is a good idea too because of the schemaless property.
USing a relationa database for storing extra information is quite weird and will add more complexity without any advantage (IMO)

are adhoc queries/updates starting to kill your productivity with MongoDB?

i've been developing a asp mvc website for almost a year now exclusively on mongodb. i've loved it for the most part. development productivity has been great using a C# mongodb driver and tools like mongovue.
however, i've started to reach a point where there are things i really wish i had a SQL server database for. simple tasks like updating a record in the DB and only mildly complex queries to generate some type of report are becoming a pain.
i read an article somewhere that in order for NOSSQL to succeed there needs to be a standard query language for it, and tools developed around it. i'm guessing this is far far away, so right now i'm stuck trying to deal with these things.
i think eventually i will have to have a dual solution with monogDB and sql server. i don't think i will ever get to the point where i am as productive updating and writing queries for mongoDB as i was with sql server.
how are you guys dealing with this when using NOSQL like mongodb? are you facing the same issues as me?
One solution you may consider is LINQPad. You can set up a template with a reference to 10Gen's drivers and write ad-hoc, C# MongoDB queries like you would in your code. My team and I use this method to address the very problem you mention.
Try it out (it's free) and see if it can help with the simple, day-to-day queries you come up with.
Edit I also support Chris's suggestion of familiarizing yourself with the native JSON query language. Nothing beats a quick console window for speed, if you know the syntax.
The official C# driver will probably get a LINQ provider some time in the future, so that'd give .NET devs a familiar syntax for querying and maybe help with initial productivity. There're also some nice docs that help relate MongoDB queries back to SQL:
SQL to Mongo Mapping Chart
SQL to MongoDB (PDF)
These are great for learning, but to get the most out of Mongo it's well worth investing time getting used to the native JSON query syntax and Mongo-specific concepts like map-reduce.
Since your questions asks,
how are you guys dealing with this when using NOSQL like mongodb?
I thought I'd chime in. I felt your pain when working with another NOSQL database, RavenDB.
I wrote a Linqpad driver specifically for ad hoc interactions with RavenDB.
https://github.com/ronnieoverby/RavenDB-Linqpad-Driver

Vork PHP framework

Has anyone used Vork? What has been your experience?
How does it compare to f3 or lithium? I'm building with MongoDB.
Which one performs better?
Due to lack of popularity and the license which is unsuitable for libraries you won't find many users of this framework. So I'll give you a placeholder answer. The performance comparison is out of scope here, and could not be objective or meaningful anyway.
I have no clue about MongoDB (their website is pretty slow, which indicates no immediate benefit of researching it further). But I've glanced over Vork:
In comparison to other frameworks it seems a bit disorganized. The naming of include files sans extension is quite unique and actually charming. But the class and directory structure isn't.
It follows the Pretend-MVC fallacy.
But my biggest concern is that it encourages oldschool SQL concatenation and escaping (and the naming of said escape function looks dated).
The templating API looks interesting, but I did not research that much. (API usability is the crucial part of frameworks, not performance.)
Website doesn't appear very inviting, and this impacts the documentation (which isn't quite complete.)
On the upside, it comes with a lot of utility code. So if you find an intersection of features that you need, then that's a reason to try it out.

Spatial Index/R Tree Support in Perl

Anyone got any good hints for working with an RTree in Perl? Either a pure RTree implementation which is performant or something I could hijack from a GIS project? Or would it be easier to use something like SQLite's spatial index support?
Cheers
Did you try Tree::R?
There doesn't seem to be much activity on that module, so it may not be good enough, but then again, it might be just what you're looking for. Just play with it for a few.