Skip to main content

MongoDB_01

    After some practice on ReactJS, moved back to NodeJS. Interactive design is pale if it can only play alone. Quite often, ReactJS, NodeJS are written together with SQL or nonDB (NoSQL Database) on job description. MongoDB is a famous nonDB.

    I'm using external MongoDB on https://account.mongodb.com/account/login. Topic related to npm installation, please refer to https://www.w3schools.com/nodejs/nodejs_mongodb.asp My .js codes connect to MongoDB via URI string. Confidential information is encapsulated in a class object as a required file.

    So, here we go! My exercises follow w3schools's tutorial, but designed in much simple way. To me, "simple" doesn't only mean "short". Clean slate also plays an important role. I may use embed function as few as possible.

Create Connection 


The MangoClient.connect() API is different from what is on w3school's tutorial. And when I did research, it take me a while to reach the current API documentation, v3.5
NodeJS's MongoDB API v3.5

Since I quite often get v.1.8/1.9 API, probably still some programmers doesn't notice that connect() takes different parameters....
API documentation is quite profound. Usually I define callback functions according to API Docs. ie. the 2nd parameter of connection()'s callback function is connection object.

Create DB, Collection



I don't think MongoDB really cares whethere db or collection is created, if there is nothing inside.... Don't know. Din't have time to try. As I can see,  conn.db(dbName) doesn't really make any call to db host, and then it create a collection with specified db name. As we can see later on, I can also set a nested document even when the structure wasn't defined yet. But only one layer. Maybe I can try to set value cross multi-layers someday.....

Usually I don't use the collection object returned by db.createCollection()'s callback.
kimetsu..... Can refere to Kimetsu no Yaiba 😜


Close Connection 



Always remember to close connection at the end. This is a good habit.


Insert Record



There are insertOne() and insertMany()
I prefer to use insertMany() since it can also insert only one record.

I intentionally design a  complex structure. Though it is not ideal, probably redundant... Many tutorial provide key-value, hash-table like structure which is not very practical in my work. I need to use complicated structure, and must be able to manipulate it.

There are string, array and nested object in design.

Query Records


I found query is rather difficult, comparing to SQL..... Quite often, I couldn't get anything if I didn't precisely match the value. Then what is the query for? if I must know everything! Alright... it's because I'm not very familiar with nonDB. I tried to use  regular expression to retrieve multiple data, with rule such like 'there are "er" in string'....... Anyway, it is a good chance to practice regular expression. (Maybe too few records is also one of my troubles.)

Query Nested Structure




Query a nested structure, key names be refereed as dot-connected string.
As regular expression, the definition string needs no quotes.
find() function doesn't return records, it only return a cursor. toArray() function processes the cursor and passes data to callback function.

Query Array


Query on array element is similar to query a string.
project() function decide which column to or not to return. It is a cursor process function; doesn't process the result. It hands data to toArray() to deal with decipher.


Sort Query 


sort() function decide ascend or descend order. It is only a cursor process function, too.



Comments

Popular posts from this blog

Guide to Preserving HuggingFace Models in Google Colab Environments

Conclusion:  Step 1:  find the model path: ls ~/.cache  Step 2:  Copy the entire folder to Google Drive:  Step 3:  Set model path to the subfolder under snapshot: My Story: I initially began exploring Generative AI (GAI) and Google Colab through Stable Diffusion. In the past, as I mainly wrote server services and console applications, I was less familiar with data science modes like R and Jupyter that can maintain a paused state. I didn't quite understand the heavy burden on Colab of creating a temporary Stable Diffusion WebUI with .ipynb, as suggested by popular guides. I just found it troublesome that connections often took a long time and then dropped, requiring a restart. Recently, while testing new versions of the Stable Diffusion model, and facing challenges due to Colab's policies making various versions of WebUI difficult to run successfully, I started researching how to write my own test programs in Colab. Eventually, I understood that Colab is ess...

docker: storage and services

Docker Volume Without going through Docker, accessing files within a Docker image is not easy. Therefore, Docker has a volume feature that allows users to specify the location on the host file system to serve as the access directory for Docker. In other words, a volume is the NFS of a Docker image. Example: Using a volume to store SQLite files. ref:  SQLite for NodeJS: https://www.sqlitetutorial.net/sqlite-nodejs/ Initialize the project. # Setup ExpressJS framework express --view=pug 240324_ejs_sqlite_docker npm init npm install express npm install sqlite3 Test: npm start Initialize docker  Since the directory already contains NodeJS, the Docker Daemon will assist in the setup. Create new docker image docker build -t atfuture7/sqlite01 . Create a folder for Docker, create a container, run it.  mkdir docker_vol docker run -p 3000:3000 -v ./docker_vol:/data --name exp_sqlite atfuture7/sqlite01 After confirming that the container can run co...

Bookmark service (MongoDB & Spring REST)

Completed a working version of Bookmark service. Feeling great~~ ha! ha! Finding something to practice is an efficient way of learning. The project concept is redesigned from a MongoDB project. Weeks ago, I was learning MongoDB and NodeJS. Mixing everything together is my hobby. There might be conflictions, but putting all strengths together has higher potential to resolve difficult and complex problems. Elites getting together might sometimes not be easy, I mean technology, of course. Nice things deserve practice.  Building your first application with MongoDB: Creating a REST API using the MEAN Stack https://www.mongodb.com/blog/post/building-your-first-application-mongodb-creating-rest-api-using-mean-stack-part-1   After redesign…… is ….extremely simple…. But contains enough new topics for me to explore. I’m just a starter of Spring (and a veteran of OO and Cloud programming). Keep everything simple and fast.    I applied to cloud services (like AWS), online artist...