Bird
Raised Fist0
GraphQLquery~10 mins

MongoDB with GraphQL - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a GraphQL query that fetches all users from MongoDB.

GraphQL
type Query { users: [User] [1] }
Drag options to blanks, or click blank then click option'
A!
C?
D*
Attempts:
3 left
💡 Hint
Common Mistakes
Adding '!' which makes the list non-nullable and may cause errors if no users exist.
2fill in blank
medium

Complete the resolver function to fetch all users from MongoDB collection.

GraphQL
const resolvers = { Query: { users: async () => await db.collection('[1]').find().toArray() } }
Drag options to blanks, or click blank then click option'
Acustomers
Busers
Corders
Dproducts
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong collection name like 'orders' or 'products' which returns wrong data.
3fill in blank
hard

Fix the error in the GraphQL schema for a User type with an ID field.

GraphQL
type User { id: [1] name: String }
Drag options to blanks, or click blank then click option'
AInt
BID!
CString!
DBoolean
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Int' or 'Boolean' for ID which is not correct for unique identifiers.
4fill in blank
hard

Fill both blanks to define a mutation that adds a new user with a name argument.

GraphQL
type Mutation { addUser(name: [1]): User [2] }
Drag options to blanks, or click blank then click option'
AString!
BBoolean
C!
DID
Attempts:
3 left
💡 Hint
Common Mistakes
Leaving out '!' which allows null values and may cause errors.
5fill in blank
hard

Fill all three blanks to write a resolver for addUser mutation that inserts a user and returns it.

GraphQL
const resolvers = { Mutation: { addUser: async (_, { [1] }) => { const result = await db.collection('users').insertOne({ [2] }); return result.[3]; } } }
Drag options to blanks, or click blank then click option'
Aname
Bname: name
Cops[0]
DinsertedId
Attempts:
3 left
💡 Hint
Common Mistakes
Returning 'insertedId' instead of the full inserted document.
Not matching argument name and inserted document field.

Practice

(1/5)
1. What is the main purpose of using GraphQL with MongoDB?
easy
A. To store data in tables instead of documents
B. To replace MongoDB with a SQL database
C. To automatically backup MongoDB data
D. To query only the specific data fields needed from MongoDB

Solution

  1. Step 1: Understand GraphQL's role

    GraphQL allows clients to request exactly the data they want, no more, no less.
  2. Step 2: Connect to MongoDB data

    MongoDB stores flexible documents, and GraphQL queries these documents precisely.
  3. Final Answer:

    To query only the specific data fields needed from MongoDB -> Option D
  4. Quick Check:

    GraphQL queries = precise data retrieval [OK]
Hint: GraphQL fetches only requested fields from MongoDB [OK]
Common Mistakes:
  • Thinking GraphQL replaces MongoDB
  • Confusing document storage with tables
  • Assuming GraphQL handles backups
2. Which of the following is the correct way to define a GraphQL query to fetch a list of users from MongoDB?
easy
A. query { users { id name email } }
B. mutation { users { id name email } }
C. query users { id name email }
D. fetch users from MongoDB

Solution

  1. Step 1: Identify GraphQL query syntax

    GraphQL queries start with the keyword query followed by the selection set.
  2. Step 2: Check the options

    query { users { id name email } } correctly uses query { users { id name email } } to fetch user fields.
  3. Final Answer:

    query { users { id name email } } -> Option A
  4. Quick Check:

    GraphQL query syntax = query + selection set [OK]
Hint: Queries start with 'query' keyword, mutations with 'mutation' [OK]
Common Mistakes:
  • Using mutation instead of query for fetching data
  • Omitting braces or keywords
  • Writing invalid syntax like 'fetch users from MongoDB'
3. Given this GraphQL query to fetch a user by ID:
query { user(id: "123") { name age } }
And MongoDB has a user document { _id: "123", name: "Alice", age: 30, city: "NY" }, what will be the query result?
medium
A. { "data": { "user": { "name": "Alice", "age": 30 } } }
B. { "data": { "user": { "name": "Alice", "city": "NY" } } }
C. { "data": { "user": { "id": "123", "name": "Alice" } } }
D. { "error": "User not found" }

Solution

  1. Step 1: Understand the query fields

    The query requests only name and age fields for user with id "123".
  2. Step 2: Match MongoDB document fields

    The document has those fields: name "Alice" and age 30, so those are returned.
  3. Final Answer:

    { "data": { "user": { "name": "Alice", "age": 30 } } } -> Option A
  4. Quick Check:

    Requested fields returned exactly [OK]
Hint: GraphQL returns only requested fields, ignoring others [OK]
Common Mistakes:
  • Expecting all document fields returned
  • Confusing id with _id field
  • Assuming error when user exists
4. You wrote this GraphQL mutation to add a new user:
mutation { addUser(name: "Bob", age: "25") { id name } }
But you get an error: "Field 'addUser' argument 'age' of type 'Int!' was provided invalid value." What is the likely cause?
medium
A. The mutation syntax is incorrect; should use query instead
B. The age argument is missing in the schema definition
C. The age argument was provided as a string, not an integer
D. The age value 25 is invalid because it is too low

Solution

  1. Step 1: Analyze the error message

    The error says the 'age' argument type is 'Int!' but the value is invalid.
  2. Step 2: Analyze the query literal

    The query provides age: "25" as a string literal, but the schema expects an integer literal for Int!, causing the invalid value error.
  3. Final Answer:

    The age argument was provided as a string, not an integer -> Option C
  4. Quick Check:

    Type mismatch in argument causes invalid value error [OK]
Hint: Match argument types exactly as schema defines [OK]
Common Mistakes:
  • Using query instead of mutation for data change
  • Ignoring schema argument types
  • Assuming numeric values are always valid
5. You want to update a user's city in MongoDB using GraphQL. The schema defines a mutation:
updateUser(id: ID!, city: String!): User
Which resolver code snippet correctly updates the city field in MongoDB?
hard
A. return UserModel.updateOne({ id }, { city });
B. return UserModel.findByIdAndUpdate(id, { city }, { new: true });
C. return UserModel.findOneAndDelete({ _id: id });
D. return UserModel.insertOne({ id, city });

Solution

  1. Step 1: Identify correct MongoDB update method

    findByIdAndUpdate updates a document by its _id and returns the updated document.
  2. Step 2: Check options for update and return

    return UserModel.findByIdAndUpdate(id, { city }, { new: true }); uses findByIdAndUpdate with { new: true } to return updated user, matching schema.
  3. Final Answer:

    return UserModel.findByIdAndUpdate(id, { city }, { new: true }); -> Option B
  4. Quick Check:

    Use findByIdAndUpdate to update and return new doc [OK]
Hint: Use findByIdAndUpdate with { new: true } to get updated doc [OK]
Common Mistakes:
  • Using updateOne without returning updated document
  • Deleting instead of updating
  • Inserting new document instead of updating existing
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard